首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

[黑桃六]凭借Cookie来隐藏GridView一些列后的刷新滞后的有关问题。按提示程度给分

2011-12-21 
[黑桃六]凭借Cookie来隐藏GridView一些列后的刷新滞后的问题。按提示程度给分。请大家仔细看看,我已经尽量简

[黑桃六]凭借Cookie来隐藏GridView一些列后的刷新滞后的问题。按提示程度给分。
请大家仔细看看,我已经尽量简化了代码。

Button_Click事件,此按钮是“隐藏哪些列”的确认按钮
--------------------------------------------------
  Dim   li   As   ListItem
                Dim   v   As   HttpCookie
                '存入Cookie
                For   Each   li   In   CheckBoxList1.Items
                        v   =   New   HttpCookie( "c "   +   li.Value)
                        If   li.Selected   =   False   Then
                                v.Value   =   0
                        Else
                                v.Value   =   1
                        End   If
                        v.Expires   =   Now.AddDays(15)
                        Response.Cookies.Add(v)
                Next
                '绑定GridView1事件。
                BindGV1()

BindGV1()方法
------------------------------------------
...
GridView1.Datasource=Dataset1
GridView1.DataBind()


GridView1_RowDataBound事件
-------------------------------------------
'由Cookie控制显示
                        Dim   li   As   ListItem
                        Try
                                For   Each   li   In   CheckBoxList1.Items
                                        If   Server.UrlDecode(Request.Cookies( "c "   +   li.Value.ToString.Trim()).Value)   =   "0 "   Then
                                                e.Row.Cells(li.Value).Style( "display ")   =   "none "
                                        Else
                                                e.Row.Cells(li.Value).Style( "display ")   =   " "
                                        End   If
                                Next
                        Catch   ex   As   Exception


                        End   Try


以上代码是好使的。但现在的现象是:
选择隐藏哪些列后,点击确认按钮,没有任何反应。但是再点一次按钮,效果出现。

屡试不爽。


[解决办法]
将选定的设置信息放viewstate,绑定时先找viewstate有没有,有就用这个来控制隐藏,没有再取cookies

Response设置cookie,接着马上用request取cookie应该是取不到的,中间有个时间差

[解决办法]
一手拿着本子,一手握着笔,静听高手的讨论。
[解决办法]
你们全会错意了,楼主分明说的是按代码量给分


[解决办法]
为虾米我测试的 HttpResponse.Cookies HttpRequest.Cookies 是同步的?

protected void Page_Load(object sender, EventArgs e)
{
HttpCookie hc = new HttpCookie( "Now ", DateTime.Now.ToString());
Response.Cookies.Add(hc); //
Response.Write(Request.Cookies[ "Now "].Value); //
}
[解决办法]
在同一个事件中设置cookie,接着就取cookie,此时cookie并没有送到客户端,要等所有代码执行完才会送给客户端,这时是取不出来的,而第二次点击时,上一次点击设置的cookie已经到客户端了,所以第二次可以取到

设置cookies的同时设置Viewstate, 比如ViewState[ "GridColumnSetting "] = "1=1&2=0&3=0 ";

另外IE好像有20个cookie的限制,如果Grid的列数多一点,每个列一个cookie的法子恐怕会出问题吧

热点排行