仰天一笑(Ansonxuyu),专业从事软件定制开发、Web软件开发,网站建设,网络推广,APP开发,微博应用开发,微信应用开发,电子商务开发,物联网开发等技术。
互联网8年风雨,愿在此交朋识友,交流心得,分享技术知识(策划/研发/运营/推广/合作)!QQ:943530498


仰天一笑

昨日不悔,今日勿失,明日莫忧! —徐羽

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  本文将介绍如何在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+"'>";
   }
  }

不吝赐教.

posted on 2007-03-26 14:18  仰天一笑  阅读(1182)  评论(2编辑  收藏  举报