『原创』.Net CF下ListView的数据绑定
首先,需要說明的是,在網(wǎng)絡(luò)上已經(jīng)有很多關(guān)于ListView數(shù)據(jù)綁定的文章了,但是,大部分是針對Winform的,那么對于很多新手來說可能對從Winform移植代碼到.net cf平臺會(huì)感覺很難,因?yàn)楹芏鄬傩曰蛘呤录]有了,不支持了,最近公司做到一個(gè)項(xiàng)目,好多ListView需要綁定數(shù)據(jù),并且是每個(gè)ListView都有不同的列(字段)綁定,唉,下文就是我的一個(gè)實(shí)踐,寫出來和大家分享一下。
我們來看一段代碼吧,我們先獲取數(shù)據(jù)源到一個(gè)DataTable中,然后,根據(jù)Listview中的列數(shù),以及列名(通常,列名已經(jīng)告訴你應(yīng)該綁定什么字段到此列了~),我們進(jìn)行字段的綁定設(shè)置:
?
Code????????private?void?DataBind()
????????{
????????????DataTable?dt?=?bllMission.GetData("");//獲取數(shù)據(jù)源
????????????string[]?str?=?new?string[6];//6是界面上ListView的列數(shù),已知的
????????????missLV.Items.Clear();
????????????foreach?(DataRow?row?in?dt.Rows)//遍歷每一行數(shù)據(jù),添加相應(yīng)的字段值到相應(yīng)的列下
????????????{
????????????????str[0]?=?row["miss_id"].ToString();
????????????????str[1]?=?row["miss_name"].ToString();
????????????????str[2]?=?row["miss_state"].ToString();
????????????????str[3]?=?row["miss_contact"].ToString();
????????????????str[4]?=?row["miss_contactTel"].ToString();
????????????????str[5]?=?row["miss_address"].ToString();
????????????????ListViewItem?item?=?new?ListViewItem(str);
????????????????missLV.Items.Add(item);
????????????}
????????}
?
Ok,看完這段代碼,想必大家都清楚了,可能你會(huì)覺得這樣做數(shù)據(jù)綁定是不是太死板了,對!我們事先要設(shè)置界面中Listview的Column,然后根據(jù)Column的數(shù)量設(shè)置str字符串?dāng)?shù)組的大小,最后再把每行的數(shù)據(jù)中相應(yīng)字段綁定到相應(yīng)的列上。
但是,沒有辦法,可能在我們這個(gè)項(xiàng)目中,界面UI這一塊是一組人專門做,然后另一組人專門綁定數(shù)據(jù)等業(yè)務(wù)邏輯操作。希望高手能提出自己的看法,分享一下自己的經(jīng)驗(yàn),一般在做Listview綁定時(shí),都用過什么方式或者方法~
之后,我覺得可以歸納成為一個(gè)公用類,這樣就不用一遍又一遍的寫這個(gè)綁定代碼了,我的公用類如下:
?
Code????????///?<summary>
????????///?listview數(shù)據(jù)邦定(指定字段綁定)
????????///?作者:Jack Fan
????????///?</summary>
????????///?<param?name="dt">數(shù)據(jù)源DataTable</param>
????????///?<param?name="lvCounts">需要綁定的Listview的列數(shù)</param>
????????///?<param?name="field">需要綁定的字段名稱,用半角逗號隔開,字段數(shù)應(yīng)該與ListView列數(shù)對應(yīng)</param>
????????///?<param?name="lv">需要綁定數(shù)據(jù)的ListView控件的ID</param>
????????public?static?void?ListViewBind(DataTable?dt,?int?lvCounts,?string?field,?ListView?lv)
????????{
????????????string[]?str?=?new?string[lvCounts];
????????????lv.Items.Clear();
????????????string[]?fields?=?Utils.SplitString(field,",");//SplitString類是用來分割形如“abc,def,higk”字符串的,分割結(jié)果放入一個(gè)字符串?dāng)?shù)組中
????????????try
????????????{
????????????????foreach?(DataRow?dr?in?dt.Rows)
????????????????{
????????????????????for?(int?i?=?0;?i?<=?lvCounts;?i++)
????????????????????{
????????????????????????str[i]?=?dr[fields[i]].ToString();
????????????????????}
????????????????????ListViewItem?item?=?new?ListViewItem(str);
????????????????????lv.Items.Add(item);
????????????????}
????????????}
????????????catch?(Exception?e)
????????????{
????????????????throw?new?Exception(e.Message);
????????????}
????????}
?
以上只是我在項(xiàng)目中的一個(gè)小小的經(jīng)驗(yàn)或者實(shí)踐,這個(gè)實(shí)踐根據(jù)現(xiàn)有的ListView的列,來從數(shù)據(jù)源中選定特定字段來進(jìn)行數(shù)據(jù)綁定,并不是最好的方法,我也看過一股腦的辦法(根據(jù)數(shù)據(jù)源中的字段數(shù)量,先生成Listview列,然后又循環(huán)遍歷,進(jìn)行行數(shù)據(jù)添加,這就更簡單了~)。希望高人能分享一些自己在.net cf開發(fā)中,數(shù)據(jù)綁定的經(jīng)驗(yàn),謝謝。也希望我的這篇文隨筆能給大家?guī)硪恍椭?/p>
總結(jié)
以上是生活随笔為你收集整理的『原创』.Net CF下ListView的数据绑定的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库“裸奔”再引祸端:VOIPO数百万
- 下一篇: Surrounded Regions