如何在DataGrid里面使用动态图形表示数字

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 cuike519 的 blog

      本文将要简单的介绍如何在datagrid里面用图形表是一个数字,听起来好象要用到gui的编程,其实不然,如果你读完全文你就会发现其实很简单,只是一个“小把戏”而已,但是请不要失望,其实在实际的应用中这个“小把戏”就是你项目中的一个亮点。

       首先为了实现这个功能我们需要一个datagrid,并且为这个datagrid邦定数据,具体的邦定代码如下(由于我说明问题的重点不在如何邦定datagrid所以我就是用了最原始的邦定方法,目的旨在说明主题)。

       画一个datagrid在html里面,代码就像下面的一样,我使用了一个测试的数据库和一个测试的表名字都叫test,同时这个test表里面有a,b,c3个字段:

   <asp:datagrid id="datagrid1" runat="server" width="100%" autogeneratecolumns="false">
     <columns>
      <asp:boundcolumn datafield="a" headertext="名称"></asp:boundcolumn>
      <asp:templatecolumn headertext="数字的图形表示">
       <itemtemplate>
        <asp:label id="label1" runat="server"></asp:label>
       </itemtemplate>
      </asp:templatecolumn>
      <asp:boundcolumn datafield="c" headertext="数字表示"></asp:boundcolumn>
     </columns>
    </asp:datagrid>

      正如你看到的,我们使用了一个模版列来显示数据,它只是一个label而不是image,其他两个是邦定字段,c就是我们要显示的数字了。

       ok,接下来我们看看,cs的部分,帮定代码如下:

sqlconnection conn = new sqlconnection(system.configuration.configurationsettings.appsettings["connectionstring"]);
   sqldataadapter da = new sqldataadapter("select a,c from test",conn);
   dataset ds = new dataset();
   da.fill(ds);
   this.datagrid1.datasource = ds.tables[0];
   this.datagrid1.databind();

      非常简单。因为我不喜欢将数据邦定代码写在html里面所以我使用了itemdatabound事件来完成这件事情。具体的代码如下:

private void datagrid1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e) {
   if(e.item.itemtype == listitemtype.item || e.item.itemtype == listitemtype.alternatingitem){
    label lbl = (label)e.item.cells[1].findcontrol("label1");
    lbl.text = "<hr align='left' color='blue' size='10' width='"+e.item.cells[2].text+"'>";
   }
  }

     看上去是不是很简单?呵呵,希望你不会以为我在骗你,好了按照上面的步骤创建一个页面试一试吧,效果不错,我想通过他还可以实现其他很多有关数据的显示,比如:比例。不过这种比例的计算你最好在邦定之前处理好放到datatable里面,这样邦定的代码将非常简单。运行的结果如下:

      好了!此文已完,祝大家工作顺利!

:p

本文关键:DataGrid
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top