IList查询数据后格式化数据再绑定控件

IList数据格式化与绑定
本文介绍如何使用IList查询数据后进行格式化处理,并绑定到.NET控件中,适用于初学者。提供了两种方法:一种是将IList转换为DataSet进行操作;另一种是直接在IList中进行数据格式化。

这篇文章送给.net初学者或者遇到类似问题的朋友,就是IList如何格式化数据再绑定,我看到网上没有多少朋友讲到这方面的最基本的问题,现在我简单说说吧,代码我就截取其中一些讲,如果不明白的朋友可以留言或者联系我。

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

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

 

ContractedBlock.gif ExpandedBlockStart.gif Code
                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();

 

ContractedBlock.gif ExpandedBlockStart.gif Code
        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 查询得数据后,想格式化一些字符串,以达到自己想要的显示效果,我们该怎么办呢?先看下效果图再给您答案。

 

 

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

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

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

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

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

 

ContractedBlock.gif ExpandedBlockStart.gif Code
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();

 

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

 

ContractedBlock.gif ExpandedBlockStart.gif Code
                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的绑定效果图,完毕!算是菜鸟与菜鸟之间的交流吧。

posted on 2009-11-19 21:52 bufferi 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/innhyul/archive/2009/11/19/1606426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值