ListView.DataItem显示为null

时间:2013-01-09 09:24:55

标签: asp.net c#-4.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>
  

在提交按钮上获取listview项目的同时点击..如下所示,   我们将qsnItem.DataItem作为 NULL

foreach (ListViewDataItem qsnItem in lvQuestions.Items)
{
}

请在这里建议出现问题。

1 个答案:

答案 0 :(得分:5)

当您再次DataItem控件时,回弹中的所有数据绑定Web控件的null都是DataBind,这在ViewState时是不必要的已启用(默认)。

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

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

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