日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

关于DataGrid数据绑定后对字段进行替换的问题与办法

發布時間:2025/3/20 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于DataGrid数据绑定后对字段进行替换的问题与办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在項目中,我再次用到了VS2003的DataGrid控件進行數據顯示。
根據要求,我需要在第8列將MSSQL2000中的varchar類型的數據"0"與"1"顯示成"未傳送"與"已傳送"
于是我便在DataGrid與DataSet進行DataBind()后,再用for循環進行替換:

myDataGrid.DataSource=myDataSet;
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.CurrentPageIndex?=?e.NewPageIndex;
?????????
myDataGrid.DataSource=myDataSet;
myDataGrid.DataBind();


再一運行,報錯了。顯示大概是前面用for循環進行替換超出index范圍值。
怎么辦?我立刻想到了兩種辦法:
1.直接把數據庫中的varchar類型的數據"0"與"1"更改成"未傳送"與"已傳送"
2.用模板列與DataBinder.Eval進行更改綁定(我選擇此方法)
.aspx

<asp:TemplateColumn?HeaderText="傳遞狀態">
???<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数据绑定后对字段进行替换的问题与办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。