我正在开发一个使用ListView
来显示问题的应用程序,以及来自DataBase
的不同表格的选项。
我在PageSize="1"
中指定了DataPager
,因此在选择用户点击下一个按钮后显示另一个问题,但是如果用户点击上一个按钮{{1} }未显示上一个选定的选项?
我不知道如何保留之前选择的选项,因为我必须在ListView
中提交它们。
答案 0 :(得分:0)
要保留此类场景中的值,请使用Session对象。您可以创建一个值集合 - 问题ID,答案ID等,并将其存储在会话中(HashTable是不错的选项)。当用户返回时,从Session中获取该Question Id的值。每当用户移动到下一个问题时刷新Session对象。但请记住处理情况 - 用户向后移动然后再移动,问题ID已经在收集中。
答案 1 :(得分:0)
您可以在Hashtable
的{{1}}中保留控件的值。下面是一个示例页面,它为Session
中的每个项目呈现2个TextBox
控件和CheckBox
。在分页事件之间保留状态。
ListView
页面:
WebForm1.aspx
文件背后的代码 - <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication13.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListView runat="server" ID="listView" EnableViewState="true" OnItemDataBound="listView_ItemDataBound" ClientIDMode="Inherit">
<ItemTemplate>
<div class="Product">
<strong>
<asp:TextBox runat="server" ID="TextBoxId" OnTextChanged="TextBox_TextChanged"></asp:TextBox>
::
<asp:TextBox runat="server" ID="TextBoxName" OnTextChanged="TextBox_TextChanged"></asp:TextBox>
</strong>
<br />
<asp:CheckBox runat="server" ID="CheckBoxChecked" AutoPostBack="true" OnCheckedChanged="CheckBoxChecked_CheckedChanged" />
</div>
</ItemTemplate>
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
</LayoutTemplate>
<ItemSeparatorTemplate>
<hr />
</ItemSeparatorTemplate>
</asp:ListView>
<asp:DataPager ID="DataPagerProducts" runat="server" PagedControlID="listView"
PageSize="1" OnPreRender="DataPagerProducts_PreRender">
<Fields>
<asp:NextPreviousPagerField ShowFirstPageButton="True" ShowNextPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ShowLastPageButton="True" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>
</div>
</form>
</body>
</html>
:
WebForm1.aspx.cs