DataGrid的模版列

      这两天琢磨了一下DataGrid的模版列,发现功能挺强,不过还有挺多没摸透的。用代码来说话吧。
      页面代码是这么写的:

 1 None.gif                          < asp:DataGrid id = " dgTasks "  runat = " server "  AllowPaging = " True "  BorderStyle = " Solid "  PageSize = " 8 "
 2 None.gif                            ToolTip = " 点击链接处理该记录 "  BorderColor = " #3168CD "  AutoGenerateColumns = " False "  Width = " 1074 " >
 3 None.gif                             < AlternatingItemStyle BackColor = " #EEEEEE " ></ AlternatingItemStyle >
 4 None.gif                             < HeaderStyle HorizontalAlign = " Center "  Font - Bold = " True "  Font - Size = " 18px " ></ HeaderStyle >
 5 None.gif                             < Columns >
 6 None.gif                                 < asp:TemplateColumn HeaderText = " 处理 " >
 7 None.gif                                     < ItemTemplate >
 8 None.gif                                         < asp:HyperLink runat = " server "  Text = " 处理 "  NavigateUrl = ' <%# "javascript:DoTask(" + DataBinder.Eval(Container.DataItem, "PI_id") + ");" %> ' >
 9 None.gif                                         </ asp:HyperLink >
10 None.gif                                     </ ItemTemplate >
11 None.gif                                 </ asp:TemplateColumn >
12 None.gif                                 < asp:TemplateColumn HeaderText = " ID " >
13 None.gif                                     < ItemTemplate >
14 None.gif                                         <% base .GetLabelColumn(( long )DataBinder.Eval(Container.DataItem,  " PI_id " ), 0 %>
15 None.gif                                     </ ItemTemplate >
16 None.gif                                 </ asp:TemplateColumn >
17 None.gif                                 < asp:TemplateColumn HeaderText = " 描述 " >
18 None.gif                                     < ItemTemplate >
19 None.gif                                         <% base .GetTAColumn(( long )DataBinder.Eval(Container.DataItem,  " PI_id " ), 2 %>
20 None.gif                                     </ ItemTemplate >
21 None.gif                                 </ asp:TemplateColumn >
22 None.gif                                 < asp:TemplateColumn HeaderText = " 级别 " >
23 None.gif                                     < ItemTemplate >
24 None.gif                                         <% base .GetValueColumn(( long )DataBinder.Eval(Container.DataItem,  " PI_id " ), 3 , 4 %>
25 None.gif                                     </ ItemTemplate >
26 None.gif                                 </ asp:TemplateColumn >
27 None.gif                                 < asp:TemplateColumn HeaderText = " 时间 " >
28 None.gif                                     < ItemTemplate >
29 None.gif                                         <% base .GetDTColumn(( long )DataBinder.Eval(Container.DataItem,  " PI_id " ), 5 %>
30 None.gif                                     </ ItemTemplate >
31 None.gif                                 </ asp:TemplateColumn >
32 None.gif                             </ Columns >
33 None.gif                             < PagerStyle Visible = " False "  HorizontalAlign = " Right "  Mode = " NumericPages " ></ PagerStyle >
34 None.gif                         </ asp:DataGrid >
      还需要在后代码中写对应的函数:
 1 None.gif          protected   string  GetTAColumn( long  id, int  colcount)
 2 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {//获取text area模版列的item
 3InBlock.gif            string item = "<textarea rows=\"3\" cols=\"16\" readonly=true title=";
 4InBlock.gif            item += dsDataSource.Tables[0].Rows[(int)id][colcount].ToString() + ">";
 5InBlock.gif            item += Server.HtmlEncode(dsDataSource.Tables[0].Rows[(int)id][colcount].ToString());
 6InBlock.gif            item += "</textarea>";
 7InBlock.gif            iTableWidth += 100;
 8InBlock.gif            return item;
 9ExpandedBlockEnd.gif        }

10 None.gif         protected   string  GetDTColumn( long  id, int  colcount)
11 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {//获取日期时间模版列的item
12InBlock.gif            string item = "<SPAN>";
13InBlock.gif            if(dsDataSource.Tables[0].Rows[(int)id][colcount]!=DBNull.Value)
14ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
15InBlock.gif                DateTime dt = (DateTime)dsDataSource.Tables[0].Rows[(int)id][colcount];
16InBlock.gif                item += dt.ToShortDateString() + "<br/>" + dt.ToLongTimeString();
17ExpandedSubBlockEnd.gif            }

18InBlock.gif            else
19InBlock.gif                item += "&nbsp&nbsp&nbsp&nbsp";
20InBlock.gif            item += "</SPAN>";
21InBlock.gif            iTableWidth += 40;
22InBlock.gif            return item;
23ExpandedBlockEnd.gif        }

24 None.gif         protected   string  GetLabelColumn( long  id, int  colcount)
25 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {//获取文本模版列的item
26InBlock.gif            string item = "<SPAN>";
27InBlock.gif            item += dsDataSource.Tables[0].Rows[(int)id][colcount].ToString();
28InBlock.gif            item += "</SPAN>";
29InBlock.gif            iTableWidth += 50;
30InBlock.gif            return item;
31ExpandedBlockEnd.gif        }

32 None.gif         protected   string  GetValueColumn( long  id, int  colcount, int  coltypeid)
33 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {//获取静态数据的对应文本模版列的item
34InBlock.gif            string item = "<SPAN>";
35InBlock.gif            DataRow[] foundRows = dsStaticData.Tables[0].Select("SD_typeid="+coltypeid.ToString());
36InBlock.gif            for(int i=0;i<foundRows.Length;i++)
37ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
38InBlock.gif                if(dsDataSource.Tables[0].Rows[(int)id][colcount].ToString()==foundRows[i]["SD_typevalue"].ToString())
39InBlock.gif                    item += foundRows[i]["SD_typetext"].ToString();
40ExpandedSubBlockEnd.gif            }

41InBlock.gif            item += "</SPAN>";
42InBlock.gif            iTableWidth += 50;
43InBlock.gif            return item;
44ExpandedBlockEnd.gif        }
      通过自定义的这些函数可以返回不同html控件。如GetDTColumn函数,就可以在日期和时间之间加个换行。
      当然,在页面文件中调用自定义函数可以传入字段名,这样可以更直观的控制列。如果同时在后代码中修改SQL调用方式,变成灵活的读取配置或数据库的方式,那就可以不用每次都编译工程,只在页面文件中就可以随意添加、删除列了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值