Infragistics的webgrid使用总结

 

最近主要做了一些关于Infragistics的webgrid后台动态添加的应用,现总结如下:

基本操作

1、动态添加、设置属性是对webgrid的dispaylayout的属性进行赋值

2、动态控制添加列属性

说      明:其中vcol是自己设定的一个枚举类型实例用于存储列的各类信息,例如数据库字段名、列宽、列头名等信息

必要设置: 

 this._dataListGrid.DisplayLayout.AutoGenerateColumns = false;

 

绑定过程:

     UltraGridColumn newCol = new UltraGridColumn();

 

     newCol.BaseColumnName = vcol.Id;       //用于指定绑定的数据列,与table中的列相同               
     newCol.Header.Caption = vcol.Name;
     newCol.Key = vcol.Name;                        //指定列的唯一标识,可按key找寻列
     newCol.Width = Convert.ToInt32(vcol.Width);      
     newCol.Format = vcol.Format;
     newCol.IsSortable();                                                     //设定排序时需要

   

     创建dataset或者datatable 获取数据(ds=。。。。。。)

     为grid指定数据源例如(this._dataListGrid.DataSource = ds;)

 

3、自定义异步读取数据      

 

必要设置:

      this._dataListGrid.Browser = BrowserLevel.Xml;
      this._dataListGrid.DisplayLayout.LoadOnDemand = LoadOnDemand.Xml;
      this._dataListGrid.DisplayLayout.XmlLoadOnDemandType = XmlLoadOnDemandType.Virtual;

    this._dataListGrid.DisplayLayout.XmlLoadOnDemandType = XmlLoadOnDemandType.Synchronous;

                                                                                                                               //选择一种异步的方式

 

实现原理:

主要是在数据刷新时,通过向数据绑定方法中(也可用存储过程实现)传入每次刷新的起始行和结束行编号以及其他必要参数信息,扩充数据源实现的。

注:webGrid会自动记录操作之前的数据从而可以在dataset中实现真正意义上的异步更新,这也是webGrid做的相对优秀的地方。在另一个控件radGrid中就不提供这种记录之前数据的功能,因此也就无法实现在dataset中真正意义上的异步更新数据。

代码过程:

       数据读取的具体代码示例,参见帮助文档中的webgrid-->data--> partial data binding部分

 

 

4、数据的排列

 

必要设置:

 this._dataListGrid .DisplayLayout.HeaderClickActionDefault = HeaderClickAction.SortSingle;
            this._dataListGrid.DisplayLayout.AllowSortingDefault = AllowSorting.OnClient;          

 

代码过程:

      排列过程参见,文档中column access下的overriding  default column sort

      参见此过程,结合partial data进行整合

 

5、将所有数据设定为超链接形式(非常有用) 

 

第一种是在InitializeRow事件中通过指定具体列,来逐个单元格设定连接

    protected void _dataListGrid_InitializeRow(object sender, RowEventArgs e)
    {

//在每一行对列进行遍历,_datalist 是一个存放列信息的类对象

        foreach (ColCollection vcl in 所有列集合)                    //这里就只是对所有的列进行循环,ColCollection 是自定义的列类型,存储列信息

                                                                                        //具体实现各尽其能吧
        {
                string url ;
              if (vcl.Link.ToString().Trim().Equals("_onclick"))
                {
                    url = "javascript:οnclick=gridOpenUrl(/"" + Server.HtmlEncode(url) + "/")";
                    e.Row.Cells.FromKey(vcl.Id).TargetURL = url;
                }
                //targeturl可以用来指定使用javascript的链接,实现了直接添加javascript代码,而不是简单的url链接

 
               else
                { 

                    url= 要写的链接字符串,可以包含qerrystring;
                    url = "@[" + vcl.Link.ToString().Trim() + "]" + ResolveUrl(url);
                    e.Row.Cells.FromKey(vcl.Id).TargetURL = url;
                } 

//这里是写的有些乱,等有机会好好总结下,会给出更适合他人阅读的代码(现在只是给自己看而已~~)

                }              
        }
    }

 

 

 

 

第二种方法是通过模版列解决,没有具体实现,尝试过程中遇到数据绑定的问题,但是也在这里给出具体的网络资料链接 

      直接通过模版列添加链接,这里要写一个继承Itemplate接口的类具体如下:

参考:http://forums.infragistics.com/forums/p/2995/17876.aspx#17876

 

 

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值