关于DataGrid数据绑定后对字段进行替换的问题与办法
生活随笔
收集整理的這篇文章主要介紹了
关于DataGrid数据绑定后对字段进行替换的问题与办法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在項(xiàng)目中,我再次用到了VS2003的DataGrid控件進(jìn)行數(shù)據(jù)顯示。
根據(jù)要求,我需要在第8列將MSSQL2000中的varchar類型的數(shù)據(jù)"0"與"1"顯示成"未傳送"與"已傳送"
于是我便在DataGrid與DataSet進(jìn)行DataBind()后,再用for循環(huán)進(jìn)行替換:
myDataGrid.DataBind();
for(int?i=0;i<myDataSet.Tables[0].Rows.Count;i++)
{
???if(myDataGrid.Items[i].Cells[7].Text=="0")
???{
??????myDataGrid.Items[i].Cells[7].Text="未傳送";
???}
???else
???{
??????myDataGrid.Items[i].Cells[7].Text="已傳送";
???}
}
運(yùn)行沒有問題,于是我接著做DataGrid的分頁功能,將頁面設(shè)置成20行,并添加事件:
?????????
myDataGrid.DataSource=myDataSet;
myDataGrid.DataBind();
再一運(yùn)行,報(bào)錯(cuò)了。顯示大概是前面用for循環(huán)進(jìn)行替換超出index范圍值。
怎么辦?我立刻想到了兩種辦法:
1.直接把數(shù)據(jù)庫中的varchar類型的數(shù)據(jù)"0"與"1"更改成"未傳送"與"已傳送"
2.用模板列與DataBinder.Eval進(jìn)行更改綁定(我選擇此方法)
.aspx
???<ItemTemplate>
??????<asp:Label?id="sendLabel"?runat="server"?Text='<%#str_Mark(DataBinder.Eval(Container,"DataItem.mark").ToString())%>'>
??????</asp:Label>
???</ItemTemplate>
</asp:TemplateColumn>
.aspx.cs
//修改DataGrid?的?Mark?字段的顯示public?string?str_Mark(string?strSign)
{
???string?strMassage?=?"";
???if(strSign?==?"0")
???{
??????strMassage?=?"<font?color='red'>"+"未傳送"+"</font>";????????????????
???}
???else?if(strSign?==?"1")
???{
??????strMassage?=?"<font?color='green'>"+"已傳送"+"</font>";????????????
???}
???return?strMassage;
}
以前看了一篇文章,說Bind要比Eval的功能和性能要好,大家也可以進(jìn)行一些更改替換。
當(dāng)然,如果大家有比我更好的解決辦法,不吝賜教!
| 作者:?XuGang ??網(wǎng)名:鋼鋼 | ||||
| 出處:?http://xugang.cnblogs.com | ||||
| 聲明:?本文版權(quán)歸作者和博客園共有。轉(zhuǎn)載時(shí)必須保留此段聲明,且在文章頁面明顯位置給出原文連接地址! | 本文轉(zhuǎn)自鋼鋼博客園博客,原文鏈接:http://www.cnblogs.com/xugang/archive/2007/11/29/976571.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者 |
總結(jié)
以上是生活随笔為你收集整理的关于DataGrid数据绑定后对字段进行替换的问题与办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error 1044 (42000):a
- 下一篇: C#创建https请求并使用pfx证书