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

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航