关键字:repeater 分页 单选按钮 我的repeater分页 已经做好了 现在每页都有单选按钮 但是当我第一页选择完所有的单选按钮后 点击进入其它页 然后再返回第一页 发现第一页所选的单选按钮都没有被选中了 请问该怎么解决呢 求助:谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过cookie或hidddenfield保存临时选择的数据 页面刷新了肯定就没了!放个updatepanle 使用Ajax,页面无刷新,就可以保存了! dingzongyinnihao我实现了页面无刷新 没用 通过cookie或hidddenfield 还算靠谱 但是求指点啊 用hidddenfield 难道要为每一页每一行的单选按钮来格外的建一个hidddenfield吗??具体怎么操作啊 求高人相助啊 那保存后 怎么又获取对应cookie里面的值 然后显示在对应的单选按钮上呢 没用过cookie wuyq11帮帮忙啊 点击这个单选按钮把选择的页码数和被选择的单选按钮的值存入cookie,在翻页事件里面读取这个cookie,如果不为null,就取值。 参见http://dotnet.aspx.cc/file/Cross-Pages-Checked-GridView.aspxhttp://dotnet.aspx.cc/article/f43af9a5-2c2e-4aa6-e976-21e9569f5a8a/read.aspx http://blog.csdn.net/wlzwcr/archive/2010/12/17/6082158.aspx //有一个demo,前一页有选中的话,返回上一页,会自动选中 我的每一行有4个单选 我的repeater功能就是实现考试的功能 现在遇到我上述所说的问题 请问大家有类似于我这种案例的代码吗 谢谢了 这个就用cookie来做了,不但可以判断每页中每个题目的选择,还可以得到你是否答完了题目。 网站可能有常用的成百上千的页面(算上url参数不同的),同一个aspx被反复利用,cookie的容量存不下。而且不管你访问什么页面所有的cookie都完全地传来传去,也就是说你访问一个关于“选择一个媳妇”的页面,却把有关“杀了多少头猪”等等其它几百个页面的内容的cookie数据都带来,这肯定是不对的。页面交互的状态,是ViewState。对于一个页面它自己回发,页号本来就是在ViewState中的。现在你不过就是需要把所有需要“选中”的行的关键值保存起来,然后在页面上匹配。比如举例数据结构:private List<string> 选中的媳妇的身份证号{ get { return (List<string>)(ViewState["sele"]??new List<String>()); }}这样,这个属性的初始默认值是空集合,当你增加一个媳妇的时候就可以增加this.选中的媳妇的身份证号.Add("238892873472348283482384");而删除就是this.选中的媳妇的省份证号.Remove("238892873472348283482384");不论怎么翻页,这个集合没有丢失。只有当你重定向到其它页面,信息自然就消失了。接下来,再你的Repeater的模板中就可以绑定checked的值,例如:<asp:CheckBox runat="server" Checked='<%# this.选中的媳妇的身份证号.Contains((string)Eval("身份证号")) %>' ID=..... /> 只要你看到局限在页面内部作用域的状态信息,要首先要考虑ViewState是否合适来作为数据的容器。 sorry,没有把初始的集合写到ViewState,是我的失误。修改一下:private List<string> 选中的媳妇的身份证号{ get { var lst=ViewState["sele"]; if(lst==null) { lst=new List<String>(); ViewState["sele"]=lst; } return lst; }} 你这个 是 复选框啊 我的是4个radio啊 但你这个思路还是可以考虑的 我会好好的想想谢谢大家的帮忙 明天继续中 有思路和方法的朋友 帮个忙 明天回复大家了 谢谢sq1234 sq1234你能改进下你的方法不 呵呵 我真的菜啊 <asp:HiddenField ID="txt" runat="server" />//保存选择项 题目ID+选项+分隔符 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="contact_person_id" DataSourceID="SqlDataSource1" EnableModelValidation="True" AllowPaging="True"> <Columns> <asp:BoundField DataField="contact_person_id" HeaderText="contact_person_id" InsertVisible="False" ReadOnly="True" SortExpression="题目id" /> <asp:TemplateField> <ItemTemplate> <input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>A' />A <input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>B' />B <input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>C' />C <input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>D' />D <input type="text" name='hf' id='<%#Eval("题目id") %>h' /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>只写了一部分,大概思路HiddenField保存题目id及选项,然后js解析HiddenField值给radio赋值,还有很多细节 用session保存 用 arraylist list.Add();if(list.contains()){ findControl() as radioButton;radio.checked} 非常的感谢大家 的帮忙 大家的思路太活跃了 我用的hidddenfield来保存值 然后用js来判断哪些radio是选中的 功能实现了 再次表示感谢但目前遇到一个问题是 可能又涉及到刷新吧 当我点击切换页面的页码时 被选中的radio也选中了 点击完成后(即松开鼠标后)被选择的radio又消失了 显示时又是未选状态 请问这是什么原因呢 ???? asp.net 导入Excel windows服务问题/在线急等... c#连接mysql时如何使用数据集设计器? AspNetPager.dll分页究竞怎样应用?我刚学写很简单的留言本 gridview分页 急,高手来帮忙GridView问题 怎么样根据地域不用,访问不同的IP地址 !!!加急,加急 !!! 关于mono for android调试 如何动态创建datalist SQL语句 求和 三层架构的问题。
放个updatepanle
我实现了页面无刷新 没用 通过cookie或hidddenfield 还算靠谱 但是求指点啊
http://dotnet.aspx.cc/file/Cross-Pages-Checked-GridView.aspx
http://dotnet.aspx.cc/article/f43af9a5-2c2e-4aa6-e976-21e9569f5a8a/read.aspx
{
get
{
return (List<string>)(ViewState["sele"]??new List<String>());
}
}这样,这个属性的初始默认值是空集合,当你增加一个媳妇的时候就可以增加this.选中的媳妇的身份证号.Add("238892873472348283482384");而删除就是this.选中的媳妇的省份证号.Remove("238892873472348283482384");不论怎么翻页,这个集合没有丢失。只有当你重定向到其它页面,信息自然就消失了。接下来,再你的Repeater的模板中就可以绑定checked的值,例如:<asp:CheckBox runat="server" Checked='<%# this.选中的媳妇的身份证号.Contains((string)Eval("身份证号")) %>' ID=..... />
{
get
{
var lst=ViewState["sele"];
if(lst==null)
{
lst=new List<String>();
ViewState["sele"]=lst;
}
return lst;
}
}
谢谢大家的帮忙 明天继续中 有思路和方法的朋友 帮个忙 明天回复大家了 谢谢sq1234 sq1234你能改进下你的方法不 呵呵 我真的菜啊
<asp:HiddenField ID="txt" runat="server" />//保存选择项 题目ID+选项+分隔符
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="contact_person_id" DataSourceID="SqlDataSource1"
EnableModelValidation="True" AllowPaging="True">
<Columns>
<asp:BoundField DataField="contact_person_id" HeaderText="contact_person_id"
InsertVisible="False" ReadOnly="True" SortExpression="题目id" />
<asp:TemplateField>
<ItemTemplate>
<input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>A' />A
<input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>B' />B
<input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>C' />C
<input type="radio" onclick=document.getElementById('txt').value+=this.id+'|' value="" name='<%#Eval("题目id") %>' id='<%#Eval("题目id") %>D' />D
<input type="text" name='hf' id='<%#Eval("题目id") %>h' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
只写了一部分,大概思路HiddenField保存题目id及选项,然后js解析HiddenField值给radio赋值,还有很多细节
if(list.contains()){
findControl() as radioButton;
radio.checked
}
我用的hidddenfield来保存值 然后用js来判断哪些radio是选中的 功能实现了
再次表示感谢但
目前遇到一个问题是 可能又涉及到刷新吧 当我点击切换页面的页码时 被选中的radio也选中了 点击完成后(即松开鼠标后)被选择的radio又消失了 显示时又是未选状态 请问这是什么原因呢 ????