小弟初学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属性就可以了.)

解决方案 »

  1.   

    sql="select name,case sex when 1 then '男' else '女' end from table1";
    然后直接绑定
      

  2.   

    ItemDataBound可以写,也可以在SQL中更改
      

  3.   

    1 最简单的方式就是在查询语句中修改,但你如果代码中还使用这个数据源的话,这样做并不推荐
    2 模版列绑定的时候用
    <%# DataBinder.Eval(DataBind.DataItem, "sex").ToString() == "1" ? "男" : "女" %>
    3 也可以在ItemDataBound等事件中修改
      

  4.   

    搞好了,直接在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;
    }就行了!
      

  5.   

    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 = "女";
            }
        }
    }
      

  6.   

    这样写的话:
    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;
    }
    }为什么不行?
      

  7.   


    晕倒MSDN里索引DBGrid时,没有找到示范代码,看了Nekchan的代码,不明白
    if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
    这一句,在MSDN里找ListItemType,结果找到了范例.
      

  8.   

    NekChan(骑蜗牛看星星):关于这个问题,又遇到了新问题,可否帮我看看?
    http://community.csdn.net/Expert/topic/5554/5554712.xml?temp=1.519412E-02