asp.net IList查询数据后格式化数据再绑定控件
asp.net IList查询数据后格式化数据再绑定控件
发布时间:2016-12-29 来源:查字典编辑
摘要:一、先讲最基本的DataSet绑定操作,GridView为例。当操作查询得一个DataSetds后,可以进行一些数据的格式化,如:复制代码代...

一、先讲最基本的 DataSet绑定操作,GridView为例。

当操作查询得一个 DataSet ds 后,可以进行一些数据的格式化,如:

复制代码 代码如下:

foreach (DataRow dr in ds.Tables[0].Rows)

{

if (dr["Depth"].ToString() != "1")

{

dr["ColumnName"] = StringHelper.StringOfChar(Convert.ToInt32(dr["Depth"]) - 1, "") + "├ " + dr["ColumnName"];

}

}

GridView1.DataSource = ds;

GridView1.DataBind();

复制代码 代码如下:

public static class StringHelper

{

/// <summary>

/// 生成指定长度的字符串,即生成strLong个str字符串

/// </summary>

/// <param name="strLong">生成的长度</param>

/// <param name="str">以str生成字符串</param>

/// <returns></returns>

public static string StringOfChar(int strLong, string str)

{

string ReturnStr = "";

for (int i = 0; i < strLong; i++)

{

ReturnStr += str;

}

return ReturnStr;

}

/// <summary>

/// 生成日期随机码

/// </summary>

/// <returns></returns>

public static string GetRamCode()

{

#region

return DateTime.Now.ToString("yyyyMMddHHmmssffff");

#endregion

}

}

像这样很快就能进行一些数据的格式化并绑定到控件了。

二、现在讲下我主要想讲的内容,如果我们用Ilist 查询得数据后,想格式化一些字符串,以达到自己想要的显示效果,我们该怎么办呢?先看下效果图再给您答案。

asp.net IList查询数据后格式化数据再绑定控件1

asp.net IList查询数据后格式化数据再绑定控件2

比如我们在做无限分类的时候 往往想让数据如上图所显示,我们又该怎么做呢。

刚上让面的DataSet写了些格式化代码,现在相信大家都想知道Ilist又该怎么操作对吧?

泛型的功能 强大我在这里就不说了,现在说重点,主要有两种方法实现,

一,把Ilist得的数据转为 DataSet的,这样你又可以重新回到熟悉的操作了

IList 转 DataSet 类(这个是我引用别人的 ^ ^)

复制代码 代码如下:

public static DataSet ConvertToDataSet<T>(IList<T> list)

{

if (list == null || list.Count <= 0)

{

return null;

}

DataSet ds = new DataSet();

DataTable dt = new DataTable(typeof(T).Name);

DataColumn column;

DataRow row;

System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

foreach (T t in list)

{

if (t == null)

{

continue;

}

row = dt.NewRow();

for (int i = 0, j = myPropertyInfo.Length; i < j; i++)

{

System.Reflection.PropertyInfo pi = myPropertyInfo[i];

string name = pi.Name;

if (dt.Columns[name] == null)

{

column = new DataColumn(name, pi.PropertyType);

dt.Columns.Add(column);

}

row[name] = pi.GetValue(t, null);

}

dt.Rows.Add(row);

}

ds.Tables.Add(dt);

return ds;

}

然后

复制代码 代码如下:

DataSet ds = ConvertToDataSet(b.ListColumn());

看,又回来熟悉的操作了吧,但是,这样做我们启不是走弯路了,为啥不直接用 DataSet就得了?没错,我们走弯路了............我想用 IList啊,不想转来转去的,难道就没有好的办法?

哈哈,答案肯定是有的,也是最简单的,往往是初学的朋友不懂解IList才现在种种疑惑,

现在讲IList 对象类的操作

还是上面的例子

比如当查询得一个

复制代码 代码如下:

BLL b = new BLL();

b.ListColumn();

我们要绑定上图所示的只需这样做

复制代码 代码如下:

IList<Qzzm.Model.ColumnInfo> list = new List<Qzzm.Model.ColumnInfo>();

foreach (Qzzm.Model.ColumnInfo m in b.ListColumn())

{

if (m.Depth.ToString() != "1")

{

m.ColumnName = StringHelper.StringOfChar(Convert.ToInt32(m.Depth) - 1, "") + "├ " + m.ColumnName + "<br>";

}

list.Add(m);

}

DataList1.DataSource = list;

DataList1.DataBind();

StringHelper还是上面的那个。经过这样的简单处理,我们就可以格式化 栏目名称了再分下DataList的绑定效果图,完毕!算是菜鸟与菜鸟之间的交流吧。

asp.net IList查询数据后格式化数据再绑定控件3

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类