我有一个 ASP.Net ListView 控件,该控件在该 ListView 中的控件是数据绑定的顺序方面存在问题。简短的问题是,在部分回发中,listview InsertItemTemplate 内的下拉列表在 listview 之前是数据绑定,从而导致问题。为什么在我们的 .Net 3.5 代码中似乎可以正常工作时会发生这种情况?
一些背景:我们已经将我们的软件安装在 .Net 3.5 中,并且运行良好。我们正在努力迁移到 .Net 4.5 并遇到了一些问题。我们有一个类似于下面的控件,它在第一次加载时加载良好。但是,在第一次加载后,如果我单击某个编辑按钮,DropDownList 数据会在 ListView 之前绑定。
<asp:ListView ID="ListView_Temp" runat="server" DataSourceID="ObjectDataSource_TempBLL"
DataKeyNames="Id”" InsertItemPosition="FirstItem"
OnDataBinding="ListView_Temp_DataBinding">
<LayoutTemplate>
<table id="itemPlaceholderContainer" runat="server">
<tr id="tr_Header">
<th></th>
<th>Name
</th>
<th></th>
</tr>
<tr id="itemPlaceholder">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr id="tr_Item" runat="server">
<td>
<asp:LinkButton ID="LinkButton_Edit" runat="server" CommandName="Edit">Edit</asp:LinkButton>
</td>
<td>
<asp:Label ID="Label_Name" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
</td>
<td></td>
</tr>
</ItemTemplate>
<InsertItemTemplate>
<tr>
<td>
<asp:LinkButton ID="LinkButton_Insert" runat="server" CommandName="Insert" ValidationGroup="TempInsert">Add</asp:LinkButton>
</td>
<td>
<asp:DropDownList ID="DropDownList_Names" runat="server" DataSourceID="ObjectDataSource_Names" DataTextField="Names"
DataValueField="NameId" OnDataBinding="DropDownList_Names_DataBinding">
</asp:DropDownList>
</td>
<td></td>
</tr>
</InsertItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:LinkButton ID="LinkButton_Update" runat="server" CommandName="Update">Update</asp:LinkButton>
<asp:LinkButton ID="LinkButton_Cancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
</td>
<td>
<asp:Label ID="Label_Name" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
</td>
<td>
<asp:LinkButton ID="LinkButton_Delete" runat="server" CommandName="Delete">Delete</asp:LinkButton>
</td>
</tr>
</EditItemTemplate>
<EmptyDataTemplate>
<table id="Table1" runat="server">
<tr>
<td>No Names are specified.
</td>
</tr>
</table>
</EmptyDataTemplate>
在我们的 .Net 3.5 代码中,调用 ListView 数据绑定方法,然后调用 DropDownList 数据绑定方法。我想知道此时是否有人看到了这一点,有任何解决方案,甚至是建议。
以下是我们测试过的一些内容。
1) 删除 DropDownList 的 ObjectDataSource。(DropDownList 仍然是数据绑定的) 2)从有问题的下拉列表中剥离尽可能多的属性/方法/属性,它仍然是数据绑定的。3) 完全停止对下拉列表进行数据绑定,只是添加了一个 shell DDL,它仍然运行数据绑定事件/方法。4) 添加其他控件类型(单选按钮、网格视图)以查看它是否是 DDL 独有的,它们也数据绑定。
任何帮助或见解将不胜感激。
注意:我们刚刚发现,如果关闭 ListView 的 ViewState,则不会发生此数据绑定。这可能会导致我们找到解决方案,但我想了解并查看有关此更改和/或进行更改的原因的文档。