lz可以新建一个表,包括性别字段(varchar())建立个主外键关系,联合查询就搞定了。要不直接在原表上把bit字段改成可以表示男女的字段类型。这样比较容易,然后在去绑定

解决方案 »

  1.   


    select 编号,姓名,case when 性别 = '1' then '男' else '女' end as 性别 from temp
    将sql语句换成我上面写的就是了
      

  2.   

    可以在SQL文中设定,使用DECODE(字段名,'0','男','女'),这样就直接显示出来了。
      

  3.   


    正解。还有个办法,就是用RowCreated事件,取的这个Cell的值判断后重新赋值。但是效率上讲应该是上面的快。
    但我这个办法可以用在一些复杂的表现上。
      

  4.   

    你说的这些方法都比较简单。
    但我已经设计了以个枚举结构,专门用来处理这些转换关系。我现在就是想如何修改dt,然后再绑定控件。(也就是说在绑定前在dt中根据已设计好的枚举结构进行数据的转换)数据中的类似 性别 这样的字段有很多,比如 状态 类字段,修改为varchar类型恐怕不大合适。
      

  5.   


    这个方法仅仅适用于 数据库字段的取值范围 为静态枚举的情况,如 性别,只有男女之分。而这个表temp中还有一个用来标识该人所属的 班组 的信息,取值为 班组编号班组 是不确定的,可随时增删改。所以这个语句就不能满足需要了。
      

  6.   

    笨方法            dt.Columns["性别"].DataType = typeof(string);
                for (int i = 0; i < dt.Rows.Count; i++)
                { 
                    dt.Rows[i]["性别"]=dt.Rows[i]["性别"].ToString()=="1"?"男":"女";
                }
      

  7.   

    不用绑定。。循环插入到DataGridView.加个判断就行了。。
      

  8.   

    可以实现grid的CellFormatting事件,加入代码  if ( e.Value="1" ) e.Value = "男"
      

  9.   

    1、在绑定之前处理  SQL codeselect 编号,姓名,casewhen 性别='1'then'男'else'女'endas 性别fromtemp 
    2、在绑定时处理  void dgv_DataBindingComplete(object o, DataGridViewBindingCompleteEventArgs e)
      {
          foreach (DataRow dr in dt)
          {
             if (dr["性别"].ToString().Equals("1"))
             {
                 dr["性别"] = "男";
             }
             else
             {
                 dr["性别"] = "女";
              }
            }
       }