请教一个关于DataGridView的问题:数据库中读取的值为“0”和“1”,绑定到DataGridView后,那一列要求将“0”显示为“未启用”“1”显示为“已启用”。代码中要怎么设置呢?

解决方案 »

  1.   

    使用模板列
    <asp:TemplateColumn HeaderText="出生日期">
    <ItemTemplate>
    <asp:Label Text='<%# StateConvert(((DataRowView)Container.DataItem)["MISFIELD001A12"].ToString()) %>' Runat="server">
    </asp:Label>
    </ItemTemplate>
    </asp:TemplateColumn>
     cs代码里这样写
     protected string StateConvert(string str)
        {
            switch (str.Trim())
                case "0":
                    return "未启用";
                    break;
                case "1"
                    return "已启用";
                    break;
                default:
                    return "为空";
                    break;
           }
      

  2.   

    模板列也可以写成这样的<asp:TemplateColumn HeaderText="出生日期">
    <ItemTemplate>
    <asp:Label Text='<%# StateConvert(DataBinder.Eval(Container, "DataItem.姓名").ToString()) %>' Runat="server">
    </asp:Label>
    </ItemTemplate>
    </asp:TemplateColumn>cs代码
    protected string StateConvert(string str)
    {
    switch (str.Trim())
    case "0":
    return "未启用";
    break;
    case "1"
    return "已启用";
    break;
    default:
    return "为空";
    break;
    }
      

  3.   

    作判断
    if(列.text.trim  0)
    {}
      

  4.   

    没有写完
    if(列.text.trim == 0)
    {
      列.text = "未启用"
    }
    else
    {
      列.text = "已启用"
    }
      

  5.   

    不好意思,忘了说一下,是WinForm里的!
      

  6.   

    swith(Eval("你的字段名")){ case 0:"已启用";break;case 1:"未启用";break;}
    这样就OK了
      

  7.   

    高效的方法是取出时就直接用case语句把0和1转换成你要显示的文本,
    还有个低效的方法是把列改为DataGridViewComboBoxColumn,然后建一个完成0-未启用,1-已启用的映射关系的DataTable,然后指定这个Column的DisplayMember属性和ValueMember属性到这个表的两个字段,并设DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
      

  8.   

    还有一种方法,更改SQL语句:
    select customerid,customername,case when usestatus = 0 then '未启用' when usestatus = 1 then '已启用' end from customers