ASP.NET ReorderList - mise à jour échoue
-
18-09-2019 - |
Question
I ai un AjaxControlToolkit ReorderList lié par un SQLDataSource à une table avec le schéma suivant:
OrgID MilestoneID Name Priority
Le champ de priorité est fixé au ReorderList comme SortOrderField. OrgID est spécifique à chaque utilisateur qui se connecte. L'idée est qu'il ya une autre liste des étapes pour chaque Org.
J'utilise pas de code derrière. Dans le EditItemTemplate j'ai deux ImageButtons pour mise à jour et annuler. Lorsque je clique sur Mettre à jour le nom de l'étape est mis à jour, mais la priorité est configurée à la valeur nulle. Je ne peux pas comprendre pourquoi ce qui se passe.
Voici le code source pour le ReorderList et son SQLDataSource:
<cc1:ReorderList ID="ReorderList1" runat="server" AllowReorder="True"
CssClass="reorderStyle" DataKeyField="MilestoneID"
DataSourceID="SqlDataSource2"
OnItemDataBound="ReorderList1_ItemDataBound"
OnItemReorder="ReorderList1_ItemReorder" PostBackOnReorder="True"
SortOrderField="Priority" Width="400px">
<ItemTemplate>
<asp:ImageButton ID="ImageButton2" runat="server" CommandName="Edit"
ImageUrl="~/Images/edit.gif" />
<asp:Label ID="Label1" runat="server"
Text='<%# Eval("Name") %>'
ForeColor="Navy" Font-Names="Arial" />
</ItemTemplate>
<DragHandleTemplate>
<img src="../Images/GrabIcon.GIF" style="cursor: move" />
</DragHandleTemplate>
<InsertItemTemplate>
</InsertItemTemplate>
<EmptyListTemplate>
<asp:Label ID="Label4" runat="server" Font-Bold="True" Font-Italic="False" ForeColor="Red"
Text="There are no Associated Milestones currently in the database"></asp:Label>
</EmptyListTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
<asp:ImageButton ID="ImageButton1" runat="server" CommandName="Update"
ImageUrl="~/Images/save.gif" />
<asp:ImageButton ID="ImageButton3" runat="server" CommandName="Cancel"
ImageUrl="~/Images/cancel.gif" />
</EditItemTemplate>
</cc1:ReorderList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
DeleteCommand="DELETE FROM [Milestones] WHERE [MilestoneID] = @MilestoneID"
InsertCommand="INSERT INTO [Milestones] ([OrgID], [Name], [Priority]) VALUES (@OrgID, @Name, @Priority)"
SelectCommand="SELECT MilestoneID, [Name], [Priority] FROM [Milestones] WHERE OrgID = @OrgID ORDER BY [Priority]"
UpdateCommand="UPDATE [Milestones] SET [Name] = @Name, Priority = @Priority WHERE [MilestoneID] = @MilestoneID">
<SelectParameters>
<asp:ProfileParameter Name="OrgID" PropertyName="OrgID" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter DbType="Guid" Name="MilestoneID" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Priority" Type="Int32" />
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter DbType="Guid" Name="MilestoneID" />
</UpdateParameters>
<InsertParameters>
<asp:ProfileParameter Name="OrgID" PropertyName="OrgID" />
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Priority" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>
Toutes les idées pourquoi le nom obtiendrait mis à jour, mais la priorité ne serait pas?
La solution
Je ne l'ai pas utilisé le contrôle de réordonnancement de visionneuse, mais aurais pensé que vous avez encore besoin pour se lier à la priorité de l'avoir envoyé à votre DataSource? Par exemple.
<asp:TextBox ID="TextBoxPriorty" runat="server" Text='<%# Bind("Priority") %>'></asp:TextBox>