本文將要簡單的介紹如何在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裡面,這樣邦定的代碼將非常簡單。