當前位置:
首頁 >
关于DataGrid数据绑定后对字段进行替换的问题与办法
發布時間:2025/3/20
48
豆豆
生活随笔
收集整理的這篇文章主要介紹了
关于DataGrid数据绑定后对字段进行替换的问题与办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在項目中,我再次用到了VS2003的DataGrid控件進行數據顯示。
根據要求,我需要在第8列將MSSQL2000中的varchar類型的數據"0"與"1"顯示成"未傳送"與"已傳送"
于是我便在DataGrid與DataSet進行DataBind()后,再用for循環進行替換:
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="已傳送";
???}
}
運行沒有問題,于是我接著做DataGrid的分頁功能,將頁面設置成20行,并添加事件:
?????????
myDataGrid.DataSource=myDataSet;
myDataGrid.DataBind();
再一運行,報錯了。顯示大概是前面用for循環進行替換超出index范圍值。
怎么辦?我立刻想到了兩種辦法:
1.直接把數據庫中的varchar類型的數據"0"與"1"更改成"未傳送"與"已傳送"
2.用模板列與DataBinder.Eval進行更改綁定(我選擇此方法)
.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的功能和性能要好,大家也可以進行一些更改替換。
當然,如果大家有比我更好的解決辦法,不吝賜教!
| 作者:?XuGang ??網名:鋼鋼 | ||||
| 出處:?http://xugang.cnblogs.com | ||||
| 聲明:?本文版權歸作者和博客園共有。轉載時必須保留此段聲明,且在文章頁面明顯位置給出原文連接地址! | 本文轉自鋼鋼博客園博客,原文鏈接:http://www.cnblogs.com/xugang/archive/2007/11/29/976571.html,如需轉載請自行聯系原作者 |
總結
以上是生活随笔為你收集整理的关于DataGrid数据绑定后对字段进行替换的问题与办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error 1044 (42000):a
- 下一篇: Delphi常见各类编译错误信息-中英对