我的数据库中有个字段statu,类型int.填充数据就是0跟1。0表示使用状态,1表示停用状态。
现在使用DataGrid来显示。如何把数据中的0显示成“使用”,数据库中的1显示成“停用”。现在的代码:
string ssql = "select * from tablename";
DataTable dt = DBConnect.Result(ssql) ;  DBConnect是一个函数,返回一个DataTable 
DataGrid.DataSource = dt;谢谢大家的帮助。

解决方案 »

  1.   

    两种方法提供参考一个是SQL语句中处理 select (CASE WHEN xxx = '0' THEN '使用' else '不使用') as bbb from...还有就是取出结果后用循环去修改DATATABLE中的数据
      

  2.   

    我觉得在数据库里处理还好些.
    可以在数据库里加一张表.
    如,主表(main_table)有id,name,status_id;
    子表(sub_table)有:
    status_id,name;你把主表和子表的status_id建立主外键关系.在写SQL语句时.
    select a.id,a.name,b.name form main_table a,sub_table b where a.status_id=b.status.id你在主表里只存ID,在子表放两条记录就行了.
      

  3.   

    string ssql = "select * from tablename";
    DataTable dt = DBConnect.Result(ssql) ;  DBConnect是一个函数,返回一个DataTable DataColumn col = new DataColumn("tmp");
    col.Expression = "iif([field3]=1,'使用','停用')";
    dt.Columns.Add(col);dt.AcceptChanges();
    DataGrid.DataSource = dt;
      

  4.   

    string ssql = "select * from tablename";
    DataTable dt = DBConnect.Result(ssql) ;  DBConnect是一个函数,返回一个DataTable DataColumn col = new DataColumn("tmp");
    col.Expression = "iif([statu]=1,'使用','停用')";
    dt.Columns.Add(col);dt.AcceptChanges();
    DataGrid.DataSource = dt;
      

  5.   

    foreach(DataRow dr in dt.rows)
    {
      if(dr["statu"]==0)
      {
        dr["statu"]="停用";
      }
      else
      {
        dr["statu"]="启用";
      }
    }
      

  6.   

    azhedream(魔幻蓝天) :你好
    这是我的SQL语句,SaleInfo.InvoFlag是int类型的。但是,在执行这条语句的时候,提示“第9行:')'附近有语法错误。哪里有问题呢?谢谢SELECT SaleInfo.ind as 售电流水号,
    SaleInfo.OperatorDate as 售电日期,
    UserInfo.UserName as 用户名,
    SaleInfo.MeterID as 电表编号,
    SaleInfo.CPUID as 卡号,
    SaleInfo.SalePower as 购电量,
    SaleInfo.SaleMoney as 购电金额,
    SaleInfo.InvoCode as 发票号,
    (CASE WHEN  SaleInfo.InvoFlag = 0 then '打印' else "未打印") as 是否打印 
    FROM SaleInfo,UserInfo WHERE SaleInfo.UserID=UserInfo.UserID  AND UserInfo.UserName = 'luckyang'
      

  7.   

    Eddie005(♂) №.零零伍 (♂) :你好。
    如果采用你的方法,那在DATAGRID不是多了一列了吗?谢谢指点
      

  8.   

    livode(啊水) :你好
    你的方法也行不通,因为数据库中statu是int类型的。而现在对这段赋值,dr["statu"]="停用",这样会提示"输入字符串格式不正确",所需类型是int32
      

  9.   

    在DataTable上直接处理即可。DataTable dt = new DataTable ();
    dt.Columns.Add( "status");
    dt.Columns.Add( "statusText");..... 取得数据if( dt.Row[x]["status"].ToString() == "0")
    {
       dt.Row[x]["statusText"] = "使用";
    }
    else
    {
       dt.Row[x]["statusText"] = "停用";
    }然后,把statusText列和DataGrid绑定即可。
      

  10.   

    SELECT SaleInfo.ind as 售电流水号,
    SaleInfo.OperatorDate as 售电日期,
    UserInfo.UserName as 用户名,
    SaleInfo.MeterID as 电表编号,
    SaleInfo.CPUID as 卡号,
    SaleInfo.SalePower as 购电量,
    SaleInfo.SaleMoney as 购电金额,
    SaleInfo.InvoCode as 发票号,
    (CASE WHEN SaleInfo.InvoFlag = 0 then '打印' else "未打印") as 是否打印
    FROM SaleInfo,UserInfo WHERE SaleInfo.UserID=UserInfo.UserID AND UserInfo.UserName = 'luckyang'
    的语法错误找出来了,应该是“case”--“end”成对出现才正确,我验证过了,没问题。