我們在使用GridView的時候,很多時候需要使用CheckBox列,比如批量刪除,批量審批,但是每每都需要記住繁瑣的實(shí)現(xiàn)方法。多麻煩呀!再次給GridView做個手術(shù),讓它自己就能產(chǎn)生CheckBox豈不爽死了。以后您就有權(quán)利忘記怎么實(shí)現(xiàn)CheckBox列了。哈哈,作咱們這行的,就要學(xué)的慢慢退化,什么事情都記著,累也累死了。
下面談?wù)勎疫@實(shí)現(xiàn)的思路:
因?yàn)镚ridView是基于模板的,Columns也不能在后臺添加,所以排除通過添加Column來實(shí)現(xiàn),而采用在GridView創(chuàng)建行的時候動態(tài)創(chuàng)建表單元格,在表頭行上添加一個全選CheckBox,數(shù)據(jù)行上添加選擇框,點(diǎn)擊全選,通過向頁面注冊的腳本來實(shí)現(xiàn)全選。
下面就看看關(guān)鍵的代碼:
為了增加靈活性,添加了一個屬性,控制是否顯示CheckBox列
//是否顯示全選
[
Description("顯示全選列"),
Category("擴(kuò)展"),
DefaultValue(false)
]
public virtual bool ShowCheckAll

{
get

{
object obj2 = this.ViewState["ShowCheckAll"];
if (obj2 != null)

{
return (bool)obj2;
}
return false;

}
set

{
bool aShowCheckAll = this.ShowCheckAll;
if (value != aShowCheckAll)

{
this.ViewState["ShowCheckAll"] = value;
if (base.Initialized)

{
base.RequiresDataBinding = true;
}
}
}
}在頁面加載的時候,注冊全選腳本
StringBuilder sb = new StringBuilder();
sb.Append(" <script type=/"text/Javascript/">");
sb.Append("function CheckAll(oCheckbox)");
sb.Append("{");
sb.Append("var GridView2 = document.getElementById(/"" + this.ClientID + "/");");
sb.Append(" for(i = 1;i < GridView2.rows.length; i++)");
sb.Append("{");
sb.Append("var inputArray = GridView2.rows[i].getElementsByTagName(/"INPUT/");");
sb.Append("for(var j=0;j<inputArray.length;j++)");
sb.Append("{ if(inputArray[j].type=='checkbox')");
sb.Append("{if(inputArray[j].id.indexOf('ItemCheckBox',0)>-1){inputArray[j].checked =oCheckbox.checked; }} }");
sb.Append("}");
sb.Append(" }");
sb.Append("</script>");
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "CheckFun", sb.ToString(),
false);
NET技術(shù):手把手教你如何擴(kuò)展GridView之自帶CheckBox,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。