最近因网站项目需要,要用到多表头,在网上找了许多资料,都没有找到UltraWebGrid多表头的文章,还是只有看自带的帮助文档,看了一上午,终于有了着落,具体实现如下:
1.先在UltraWebGrid1.DisplayLayout.Bands[0]中设置相应的列,这里我设置的列是r1,r2_1,r2_2,r3
?
2.在ultrawebgird控件的InitializeLayout事件中写如下代码
???? protected void UltraWebGrid1_InitializeLayout(object sender, LayoutEventArgs e)
???? {????????
???????? //先把所有列头都设为第二行
???????? foreach (Infragistics.WebUI.UltraWebGrid.UltraGridColumn c in UltraWebGrid1.DisplayLayout.Bands[0].Columns)
???????? {
???????????? c.Header.RowLayoutColumnInfo.OriginY = 1; //枞向起始点,0为第一行,1为第二行,依次类推
???????? }
???????? Infragistics.WebUI.UltraWebGrid.ColumnHeader ch = new Infragistics.WebUI.UltraWebGrid.ColumnHeader(true); //创建一个列头对象
???????? ch.Caption = "表头";?? //列头文本标题
???????? ch.RowLayoutColumnInfo.OriginX = 1;???????? //横向起始点,0为第一列,1为第二列,依次类推
???????? ch.RowLayoutColumnInfo.OriginY = 0;???????? //枞向起始点,0为第一行,1为第二行,依次类推
???????? ch.RowLayoutColumnInfo.SpanX = 2;?????????? //设置横向跨度
???????? UltraWebGrid1.DisplayLayout.HeaderStyleDefault.Height = Unit.Pixel(15);
???????? UltraWebGrid1.DisplayLayout.Bands[0].HeaderLayout.Add(ch);?? //增加到列头集合中
???????? //把非多表头的列,进行跨行
???????? foreach (Infragistics.WebUI.UltraWebGrid.UltraGridColumn c in e.Layout.Bands[0].Columns)
???????? {
???????????? if (c.Key == "r1" || c.Key == "r3")?? //c.Key 非多表头列的key值
???????????? {
???????????????? c.Header.RowLayoutColumnInfo.OriginY = 0;?? //从第一行开始
???????????????? c.Header.RowLayoutColumnInfo.SpanY = 2;?? //跨2行
???????????? }
???????? }
???? }
?
?
3.绑定数据源
DataSet ds = Maticsoft.DBUtility.DbHelperSQL.Query("select 1 as r1, 2 as r2_1,3 as r2_2, 4 as r3"); //这里返回一个dataset对象,并绑定到UltraWebGrid控件