最近在开发一项功能的时候需要用到了jquery 的 cookie功能,主要需求是通过cookie来实现listbox功能的增加、删除等功能
本来想用asp:ListBox,但是感觉没那么好看,所以就采用了js+CSS模式,通过cookie来实现前后台操作。
这里主要想记录一下一个问题,就是每次页面加载的时候后台都会动态的去增加cookie,当聪listbox中删除对应的项时,js也要把对应cookie删除掉,避免重复插入或更新问题。代码如下:
后台代码:
HtmlGenericControl div = new HtmlGenericControl("div");
div.InnerText = dr["username"].ToString();
div.InnerHtml = dr["username"].ToString();
div.Attributes.Add("data-value", dr["username"].ToString());
div.Attributes.Add("data-index", dr["username"].ToString());
div.Attributes.Add("class", "item");
div.ID ="Listvalue_"+i;
select_b_list.Controls.Add(div);
string strValue = HttpUtility.UrlEncode(dr["username"].ToString()).ToUpper();//dr["username"].ToString();//;
HttpCookie cookie = new HttpCookie(strValue, strValue);
// cookie.Expires = System.DateTime.Now.AddDays(1);
Response.AppendCookie(cookie);
JS 代码 :
//删除选中
btn_b.click(function () {
var a = select_b.find(".is_select").clone(true);
if (a.size() == 0) {
return false;
}
var isCheck = true;
select_a.children("div").each((function () {
if ($(this).attr("data-value") == a.attr("data-value")) {
isCheck = false;
}
}))
if (isCheck) {
select_a.append(a);
}
var xx = a.attr("data-value");
//$.cookie(xx, '', { expires: -1 });
$.removeCookie(xx, { domain: '', path: '/' });
//$.cookie(xx, null, {path:'/'})
select_b.find(".is_select").remove();
// option_sort(select_a);
});
通过这样的操作就可以直接将cookie删除掉,避免后台根据cookie name 重复插入数据库表的问题