0

Listview绑定代码

<asp:Content ID="Content3" ContentPlaceHolderID="leftColumnPlaceHolder" runat="server">
    <asp:ListView ID="lvQuestions" runat="server" OnItemDataBound='lvQuestions_ItemDataBound'>
        <LayoutTemplate>
            <div id="itemPlaceholder" runat="server">
            </div>
            <asp:Button ID="btnSubmitAnswers" runat="server" Text="Submit Answers" OnClick="btnSubmitAnswers_Click" />
        </LayoutTemplate>
        <ItemTemplate>
            <div>
                <%# Container.DataItemIndex + 1 %>:<%# Eval("Body") %>
            </div>
            <asp:RadioButtonList ID="rdlAnswers" runat="server" DataSource='<%#Eval("ExamAnswer") %>' DataTextField='Body' DataValueField="AnswerId">
            </asp:RadioButtonList>
        </ItemTemplate>
    </asp:ListView>
</asp:Content>

在提交按钮点击获取列表视图项目时..如下所示,我们将 qsnItem.DataItem 设为NULL

foreach (ListViewDataItem qsnItem in lvQuestions.Items)
{
}

请建议这里出了什么问题。

4

1 回答 1

5

当您不再使用该控件时DataItem,ASP.NET 中的所有数据绑定 Web 控件都处于回发状态,这在启用时是不必要的(默认)。nullDataBindViewState

因此,您可以使用模板中的控件来获取值:

foreach (ListViewDataItem qsnItem in lvQuestions.Items)
{
    RadioButtonList rdlAnswers = (RadioButtonList)qsnItem.FindControl("rdlAnswers");
}

如果您需要旧值,则需要从数据库加载它们或使用ListViewUpdatedEventArgs.OldValues Property

于 2013-01-09T09:35:35.167 回答