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)
{
}
请在这里建议出现问题。
答案 0 :(得分:5)
当您再次DataItem
控件时,回弹中的所有数据绑定Web控件的null
都是DataBind
,这在ViewState
时是不必要的已启用(默认)。
因此,您可以使用模板中的控件来获取值:
foreach (ListViewDataItem qsnItem in lvQuestions.Items)
{
RadioButtonList rdlAnswers = (RadioButtonList)qsnItem.FindControl("rdlAnswers");
}
如果您需要旧值,则需要从数据库加载它们或使用ListViewUpdatedEventArgs.OldValues
Property。