如何改变Gridview中某一列的所有值

rommel0073 2012-07-16 08:18:19
创建了一个 DataTable 对象,将查询结果填充进去,然后再将 DataTable 对象在GridView中展现出来,代码如下



sqldap.SelectCommand = cmm;
DataTable dt = new DataTable();
sqldap.Fill(dt);

GridView1.DataSource = dt;
GridView1.DataBind();



但是最后展现的表格中的第6列全是部门代码,每个部门代码都代表一个部门汉字名称,我现在需要在最后的结果里显示出部门汉字名称,而不是这些符号代码,请问怎么才能做到?

我看有些网站上说要通过GridView1_RowDataBound 里改,我自己照葫芦画瓢写了一个,但是运行之后还是没用


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{

if (e.Row.Cells[5].Text == "1233456")//123456 是部门代码
{

e.Row.Cells[5].Text = "XXX";//xxx代表部门汉字名称
}

}
}



有谁知道用什么最简单的办法可以把符号代码转换程部门汉字名称吗?谢谢!
...全文
437 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lauxm 2012-07-16
  • 打赏
  • 举报
回复
写查询语句的时候用连接查询,然后再绑定
SELECT A.*,B.部门名称 from A LEFT JOIN B ON A.部门代码=B.部门代码
孟子E章 2012-07-16
  • 打赏
  • 举报
回复
GridView1_RowDataBound是在进行数据绑定的时候执行的,也就是执行GridView1.DataBind();的时候。
如果没有起作用,是你的代码有问题
rommel0073 2012-07-16
  • 打赏
  • 举报
回复
我刚刚想了一下,应该是我没有把GridView和任何数据源绑定(就是在“设计”里,“GridView任务”里,没有指定数据源),所以 if (e.Row.RowType == DataControlRowType.DataRow)条件部满足,就无法执行下面的代码,不知道我的理解对不对,各位有什么纠正吗?谢谢了。
rommel0073 2012-07-16
  • 打赏
  • 举报
回复
还有一个问题,GridView1_RowDataBound函数是在何时被调用的?我是把它写在 protected void Button1_Click函数后面的,在protected void Button1_Click中最后的代码是:
GridView1.DataSource = dt;
GridView1.DataBind();

会不会GridView1_RowDataBound函数还没来得及调用,GridView就显示出来了?所以GridView1_RowDataBound函数里的代码就没用了?
rommel0073 2012-07-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
在数据库中重新建一个字典表(Directory),键(Key)为部门代码,值(value)为部门名称,在绑定钱进行键值转换就行了。
[/Quote]

谢谢,刚刚我改进了一下自己的代码,和第一个帖子里的代码应该是换汤不换药,但是为何还是无法实现呢?各位看出什么bug了吗?


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string text = e.Row.Cells[4].Text.ToString();//下标从0开始,要修改第5列
if (text.Equals("123456"))//123456是部门代码
{
text = "XXX";//xxx代表部门汉字名称
}

e.Row.Cells[4].Text = text;
}
}


睿智天成 2012-07-16
  • 打赏
  • 举报
回复
在数据库中重新建一个字典表(Directory),键(Key)为部门代码,值(value)为部门名称,在绑定钱进行键值转换就行了。
bdmh 2012-07-16
  • 打赏
  • 举报
回复
定义一个对应的 Directory,直接根据Key值就可以显示了
孟子E章 2012-07-16
  • 打赏
  • 举报
回复
你可以把部门代码先存放到Directory等里面。然后进行替换

Dictionary<String, String> bm = new Dictionary<string, string>();
bm.Add("1111", "AAAA");
bm.Add("1233456", "XXXX");


e.Row.Cells[5].Text = bm[e.Row.Cells[5].Text];
cry222222 2012-07-16
  • 打赏
  • 举报
回复
在数据库中重新建一个字典表(Directory),键(Key)为部门代码,值(value)为部门名称,在绑定钱进行键值转换就行了。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧