Asp.net服务器端控件CheckBoxList的使用心得
1.用JavaScript獲得Asp.net服務器端控件CheckBoxList選中得值
?
Asp.net服務器端控件CheckBoxList在客戶端沒有生成value值,所以就想在客戶端通過JS獲得選中項就很麻煩了。
迫于無奈,只能寫了以下的代碼。比較通用,適合于CheckBoxList的屬性RepeatLayout為Flow和Table,屬性RepeatDirection為Horizontal和Vertical
objID為服務器端控件在客戶端生成的ID
通用版本(不依賴任何類庫)
function GetCheckBoxListValue(objID)
{
??? var v = new Array();
??? var CheckBoxList = document.getElementById(objID);
??? if(CheckBoxList.tagName == "TABLE")
??? {
??????? for(i=0;i<CheckBoxList.rows.length;i++)???
??????????? for(j=0;j<CheckBoxList.rows[i].cells.length;j++)
? if(CheckBoxList.rows[i].cells[j].childNodes[0])
??????????????????? if(CheckBoxList.rows[i].cells[j].childNodes[0].checked==true)
??????????????????????? v.push(CheckBoxList.rows[i].cells[j].childNodes[1].innerText);
??? }
??? if(CheckBoxList.tagName == "SPAN")
??? {
??????? for(i=0;i<CheckBoxList.childNodes.length;i++)
??????????? if(CheckBoxList.childNodes[i].tagName == "INPUT")
??????????????? if(CheckBoxList.childNodes[i].checked==true)
??????????????? {
??????????????????? i++;
??????????????????? v.push(CheckBoxList.childNodes[i].innerText);
??????????????? }???????????
??? }
??? return v;
}
Asp.net Ajax版本(依賴Asp.net Ajax類庫支持)
function GetCheckBoxListValue(objID)
{
??? var v = new Array();
??? var CheckBoxList = $get(objID);
??? if(CheckBoxList.tagName == "TABLE")
??? {
??????? for(i=0;i<CheckBoxList.rows.length;i++)???
??????????? for(j=0;j<CheckBoxList.rows[i].cells.length;j++)
??????????????? if(CheckBoxList.rows[i].cells[j].childNodes[0])
??????????????????? if(CheckBoxList.rows[i].cells[j].childNodes[0].checked==true)
???????????????????????? Array.add(v,CheckBoxList.rows[i].cells[j].childNodes[1].innerText);
??? }
??? if(CheckBoxList.tagName == "SPAN")
??? {
??????? for(i=0;i<CheckBoxList.childNodes.length;i++)
??????????? if(CheckBoxList.childNodes[i].tagName == "INPUT")
??????????????? if(CheckBoxList.childNodes[i].checked==true)
??????????????? {
??????????????????? i++;
??????????????????? Array.add(v,CheckBoxList.childNodes[i].innerText);
??????????????? }???????????
??? }
??? return v;
}
2.判斷CheckBoxList中SelectedIndexChanged事件是哪個checkbox引發的
? private?? static?? bool[]?? arrtmp;????
? private?? void?? Page_Load(object?? sender,?? System.EventArgs?? e)??
? {??
????? //?? 在此處放置用戶代碼以初始化頁面??
????? if(!IsPostBack)??
????? {??
????????? arrtmp=new?? bool[CheckBoxList1.Items.Count];??
????????? for(int?? i=0;i?? <=CheckBoxList1.Items.Count-1;i++)??
????????? {??
????????????? arrtmp[i]=CheckBoxList1.Items[i].Selected;??
????????? }??
????? }??
? }?
//判斷當前觸發的checkbox項的id和是否選中
? private?? void?? CheckBoxList1_SelectedIndexChanged(object?? sender,?? System.EventArgs?? e)??
? {??
????? int?? clicknum;????
????? clicknum=-1;??
????? for(int?? i=0;i?? <=?? CheckBoxList1.Items.Count-1;i++)??
????? {??
????????? if(arrtmp[i]!=CheckBoxList1.Items[i].Selected)??
????????? {??
????????????? arrtmp[i]?? =CheckBoxList1.Items[i].Selected;??
????????????? clicknum=i;??
????????????? break;??
????????? }??
????? }??
????? if(clicknum>=0)??
????? {??
????????? TextBox1.Text=CheckBoxList1.Items[clicknum].ToString();??
????? }????
? }?
3.得到當前所有CheckBoxList選擇的項
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
??????? //得到當前所有選擇的項
??????? string Groupid = "";
??????? foreach (ListItem li in ((CheckBoxList)sender).Items)
??????? {
??????????? if (li.Selected)
??????????? {
??????????????? if (Groupid == "")
??????????????? {
??????????????????? Groupid = Groupid + li.Value;
??????????????? }
??????????????? else
??????????????? {
??????????????????? Groupid = Groupid + "," + li.Value;
??????????????? }
??????????? }
??????? }
}
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/rmak2008/archive/2009/01/07/3725463.aspx
轉載于:https://www.cnblogs.com/MYGMVP/archive/2009/07/07/1518130.html
總結
以上是生活随笔為你收集整理的Asp.net服务器端控件CheckBoxList的使用心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于@DQ的留言回复
- 下一篇: 灰盒测试—数据库软件