轉帖地址:http://www.cnblogs.com/shawker/archive/2009/03/17/1414795.html
在項目中我們可能會經常遇到一收集多選資訊的情況,比如做註冊的時候要收集個人愛好,那時候大家第一個想到的肯定是CheckBoxList。那我們怎麼來擷取到CheckBoxList的值並且存入資料庫呢??
如果我們還需要編輯使用者的個人資訊而其中愛好也是可以改動的,此時同樣大家也會想用CheckBoxList去顯示使用者的各人資訊,那我們又要如何將庫裡的值用CheckBoxList表示出來呢?? 編輯分析問題
遇到這種情況大家肯定想到for,foreach去遍曆,沒錯這樣完沒有問題,不管是擷取CheckBoxList的值還是設定CheckBoxList的值我們都可以用遍曆去實現。而我這裡將大家常用的方法總結了一下,做了兩個方法。這樣用起來能更方便靈活。
舉個例子:我們要收集某某公司員工的資訊其中一項是愛好。而且要求員工資訊可以改動
我們選用了CheckBoxList來實現愛好的收集和顯示
方法:
......
1.收集時,將CheckBoxList裡選中的項轉換成字串,並用“,”隔開
這裡只要調用方法GetChecked(CheckBoxList checkList, string separator)
就可以擷取到想要的資料。然後存入資料庫。
2.顯示時,先從庫裡擷取愛好的資料(剛剛用“,”隔開的字串),
然後調用方法SetChecked(CheckBoxList checkList,string selval,string separator)
就可以將庫裡的資料用CheckBoxList的形式表現出來
方法的使用:
//這裡擷取CheckBoxList中的選中項並用","隔開
string str=GetChecked(this.checkList1, ",");
......
//這裡是將str這個字串的值又設回CheckBoxList
SetChecked(this.checkList1,str,",");
/// <summary>初始化CheckBoxList中哪些是選中了的</summary> /// <param name="checkList">CheckBoxList</param> /// <param name="selval">選中了的值串例如:"0,1,1,2,1"</param> /// <param name="separator">值串中使用的分割符例如"0,1,1,2,1"中的逗號</param> public static string SetChecked(CheckBoxList checkList, string selval, string separator) { selval = separator + selval + separator; //例如:"0,1,1,2,1"->",0,1,1,2,1," for (int i = 0; i < checkList.Items.Count; i++) { checkList.Items[i].Selected = false; string val = separator + checkList.Items[i].Value + separator; if (selval.IndexOf(val) != -1) { checkList.Items[i].Selected = true; selval = selval.Replace(val, separator); //然後從原來的值串中刪除已經選中了的 if (selval == separator) //selval的最後一項也被選中的話,此時經過Replace後,只會剩下一個分隔字元 { selval += separator; //添加一個分隔字元 } } } selval = selval.Substring(1, selval.Length - 2); //除去前後加的分割符號 return selval; } /// <summary> /// 得到CheckBoxList中選中了的值 /// </summary> /// <param name="checkList">CheckBoxList</param> /// <param name="separator">分割符號</param> /// <returns></returns> public static string GetChecked(CheckBoxList checkList, string separator) { string selval = ""; for (int i = 0; i < checkList.Items.Count; i++) { if (checkList.Items[i].Selected) { selval += checkList.Items[i].Value + separator; } } return selval; }