想在DBGrid显示数据时改变显示内容,该怎么写?

flai 2007-05-22 03:49:34

小弟初学asp.net,遇到这样的问题:

sql="select name,sex... from table1";

由于table1里字段sex(性别)存储的是代码1和2(1代表男,2代表女)

希望显示在DBGrid里,sex列显示的是男和女,而不是1和2,

该在DBGrid的ItemDataBound事件写还是在PreRender,ItemCreated事件?


(以前用的是Delphi,在Delphi里,运行时直接变成Field的DisplayLable属性就可以了.)
...全文
278 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
flai 2007-05-23
  • 打赏
  • 举报
回复
NekChan(骑蜗牛看星星):

关于这个问题,又遇到了新问题,可否帮我看看?


http://community.csdn.net/Expert/topic/5554/5554712.xml?temp=1.519412E-02
flai 2007-05-22
  • 打赏
  • 举报
回复

晕倒

MSDN里索引DBGrid时,没有找到示范代码,

看了Nekchan的代码,不明白
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
这一句,在MSDN里找ListItemType,结果找到了范例.

flai 2007-05-22
  • 打赏
  • 举报
回复
这样写的话:
switch(e.Item.Cells[1].Text)
{
case "1":e.Item.Cells[1].Text="系统代码";break;
case "2":e.Item.Cells[1].Text="用户代码";break;
default:break;
}
把DBGrid的标题行也改了

改在这样
if(e.Item.ItemIndex>0){
switch(e.Item.Cells[1].Text)
{
case "1":e.Item.Cells[1].Text="系统代码";break;
case "2":e.Item.Cells[1].Text="用户代码";break;
default:break;
}
}

为什么不行?
NekChan 2007-05-22
  • 打赏
  • 举报
回复
aspx:
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 104; LEFT: 48px; POSITION: absolute; TOP: 200px"
runat="server" AutoGenerateColumns="False" Width="216px">
<Columns>
<asp:BoundColumn DataField="Sex" HeaderText="Sex"></asp:BoundColumn>
</Columns>
</asp:DataGrid>

cs:
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
if (e.Item.Cells[0].Text == "1")
{
e.Item.Cells[0].Text = "男";
}
else
{
e.Item.Cells[0].Text = "女";
}
}
}
flai 2007-05-22
  • 打赏
  • 举报
回复
搞好了,直接在ItemDataBound事件写

switch(e.Item.Cells[1].Text)
{
case "1":e.Item.Cells[1].Text="系统代码";break;
case "2":e.Item.Cells[1].Text="用户代码";break;
default:break;
}

就行了!
amandag 2007-05-22
  • 打赏
  • 举报
回复
1 最简单的方式就是在查询语句中修改,但你如果代码中还使用这个数据源的话,这样做并不推荐
2 模版列绑定的时候用
<%# DataBinder.Eval(DataBind.DataItem, "sex").ToString() == "1" ? "男" : "女" %>
3 也可以在ItemDataBound等事件中修改
NekChan 2007-05-22
  • 打赏
  • 举报
回复
ItemDataBound可以写,也可以在SQL中更改
Qim 2007-05-22
  • 打赏
  • 举报
回复
沙发.顶一下.
wei123456 2007-05-22
  • 打赏
  • 举报
回复
sql="select name,case sex when 1 then '男' else '女' end from table1";
然后直接绑定

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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