现在的位置: 首页 > 综合 > 正文

DataGrid实现动态数字图形效果

2011年10月06日 ⁄ 综合 ⁄ 共 1297字 ⁄ 字号 评论关闭

  本文将介绍如何在DataGrid(其他绑定控件)里面用图形表是一个数字,听起来有点玄,可能涉及啥图像编程,其实俺就是兜了圈子,耍了点小聪明实现之,在此献丑了,如果你用在项目中,客户认为你很cool的,是个亮点哦,哈哈。

       首先为了实现这个功能我们需要一个DataGrid,并且为这个DataGrid邦定数据,具体的前台绑定代码如下(后台不再赘述)。

       画一个DataGrid在HTML里面,代码就像下面的一样,我使用了一个测试的数据库和一个测试的表名字都叫test,同时这个test表里面有name,score 2个字段:

   <asp:DataGrid id="DataGrid1" runat="server" Width="100%" AutoGenerateColumns="False">
     <Columns>
      <asp:BoundColumn DataField="name" HeaderText="名称"></asp:BoundColumn>
      <asp:TemplateColumn HeaderText="数字的图形表示">
       <ItemTemplate>
        <asp:Label id="Label1" runat="server"></asp:Label>
       </ItemTemplate>
      </asp:TemplateColumn>
      <asp:BoundColumn DataField="score" HeaderText="数字表示"></asp:BoundColumn>
     </Columns>
    </asp:DataGrid>

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

     
      非常简单。因为我不喜欢将数据邦定代码写在HTML里面所以我使用了ItemDataBound事件来完成这件事情。其中你千万不要尝试给lable定义宽度,因为我就是为了这个绕了很大的圈子,它是个什么Uint型的,转换很烦,如果只是转换Int型还凑合,如果是Double型就不行了,如果尝试之后不行,请用我这个"投机取巧"之作,在此献丑,代码如下:

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+"'>";
   }
  }

不吝赐教.

抱歉!评论已关闭.