最近公司做到一个项目,好多ListView需要绑定数据,并且是每个ListView都有不同的列(字段)绑定,唉,下文就是我的一个实践,写出来和大家分享一下。
首先,需要说明的是,在网络上已经有很多关于ListView数据绑定的文章了,但是,大部分是针对Winform的,那么对于很多新手来说可能对从Winform移植代码到.net cf平台会感觉很难,因为很多属性或者事件没有了,不支持了,最近公司做到一个项目,好多ListView需要绑定数据,并且是每个ListView都有不同的列(字段)绑定,唉,下文就是我的一个实践,写出来和大家分享一下。
我们来看一段代码吧,我们先获取数据源到一个DataTable中,然后,根据Listview中的列数,以及列名(通常,列名已经告诉你应该绑定什么字段到此列了~),我们进行字段的绑定设置:
Code
private void DataBind()
{
DataTable dt = bllMission.GetData("");//获取数据源
string[] str = new string[6];//6是界面上ListView的列数,已知的
missLV.Items.Clear();
foreach (DataRow row in dt.Rows)//遍历每一行数据,添加相应的字段值到相应的列下
{
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,看完这段代码,想必大家都清楚了,可能你会觉得这样做数据绑定是不是太死板了,对!我们事先要设置界面中Listview的Column,然后根据Column的数量设置str字符串数组的大小,最后再把每行的数据中相应字段绑定到相应的列上。
但是,没有办法,可能在我们这个项目中,界面UI这一块是一组人专门做,然后另一组人专门绑定数据等业务逻辑操作。希望高手能提出自己的看法,分享一下自己的经验,一般在做Listview绑定时,都用过什么方式或者方法~
之后,我觉得可以归纳成为一个公用类,这样就不用一遍又一遍的写这个绑定代码了,我的公用类如下:
Code
/// <summary>
/// listview数据邦定(指定字段绑定)
/// 作者:Jack Fan
/// </summary>
/// <param name="dt">数据源DataTable</param>
/// <param name="lvCounts">需要绑定的Listview的列数</param>
/// <param name="field">需要绑定的字段名称,用半角逗号隔开,字段数应该与ListView列数对应</param>
/// <param name="lv">需要绑定数据的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”字符串的,分割结果放入一个字符串数组中
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);
}
}
以上只是我在项目中的一个小小的经验或者实践,这个实践根据现有的ListView的列,来从数据源中选定特定字段来进行数据绑定,并不是最好的方法,我也看过一股脑的办法(根据数据源中的字段数量,先生成Listview列,然后又循环遍历,进行行数据添加,这就更简单了~)。希望高人能分享一些自己在.net cf开发中,数据绑定的经验,谢谢。也希望我的这篇文随笔能给大家带来一些帮助。