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

类别:.NET开发 点击:0 评论:0 推荐:

      本文将要简单的介绍如何在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

本文地址:http://com.8s8s.com/it/it44836.htm