我有一个"类似调查"的项目,我的网格包括一个名称列表,单选按钮列表1-10供用户选择。网格中每个问题的页面大小仅为1。
我怎么可能导航回来并看到我的结果被选中?我研究了很长时间,有的说会话,有的用查询字符串。要详细说明我真正想要的是什么,请查看以下链接:http://www.aspsnippets.com/Articles/Preserving-state-of-Checkboxes-while-paging-in-ASP.Net-GridView-Control.aspx
如何在上面的项目中实现复选框作为单选按钮列表?
我的代码:
protected void SubmitAppraisalGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SubmitAppraisalGrid.PageIndex = e.NewPageIndex;
ArrayList list = FindValues(this.Page);
DataTable dt = (DataTable)ViewState["QuestionTable"];
SubmitAppraisalGrid.DataSource = dt;
SubmitAppraisalGrid.DataBind();
}
设计:
<asp:GridView ID="SubmitAppraisalGrid" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BorderWidth="0px"
OnPageIndexChanging="SubmitAppraisalGrid_PageIndexChanging"
onrowcreated="SubmitAppraisalGrid_RowCreated" PageSize="1" ShowHeader="False"
style="margin-right: 0px">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="QuestionLbl" runat="server" Text='<%# Bind("Question")%>'></asp:Label>
<br />
<br />
<asp:GridView ID="StaffAppraisalGrid" runat="server"
AutoGenerateColumns="False" BorderWidth="0px" CellPadding="4" CellSpacing="2"
GridLines="Horizontal">
<Columns>
<asp:BoundField DataField="StaffName" HeaderText="Name">
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField HeaderText="Rate">
<ItemTemplate>
<asp:RadioButtonList ID="RadioList" runat="server" CellPadding="8"
DataSource='<%# Bind("RadioButtonList")%>' RepeatDirection="Horizontal">
</asp:RadioButtonList>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Remarks">
<ItemTemplate>
<asp:TextBox ID="RemarksTbx" runat="server" CssClass="remarkTbx"
onKeyDown="limitText(this,500);" onkeypress="return check(event)"
onKeyUp="limitText(this,500);" onMouseDown="return DisableControlKey(event)"
Text='<%# Bind("RemarkTbx")%>' TextMode="MultiLine"></asp:TextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle HorizontalAlign="Center" />
</asp:GridView>
我认为使用Session("QuestionTable")将如您所描述的那样工作,用户将能够导航回页面并查看他们选择的内容。在他们进入新页面之前,你只需要用他们在回发中所做的选择来更新它。
在PageLoad(或某个按钮单击事件)上,从RadioButtons检索值,更新QuestionTable,然后将其放入会话内存。
Session("QuestionTable") = dt