3

我有一个 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,则不会发生此数据绑定。这可能会导致我们找到解决方案,但我想了解并查看有关此更改和/或进行更改的原因的文档。

4

0 回答 0