select case when hf=0 then '未婚' else '已婚' end as hf,...... from ....

解决方案 »

  1.   

    像kendison()这样做我也想过,我用的是ORACLE数据库,要DECODE是比较麻烦一些,
    但是还有其它方法吗?各位请不吝赐教.
      

  2.   

    原列不变,添加新列:        Dim b As DataTable = 你的数据表
            b.Columns.Add("ll", System.Type.GetType("System.String"))
            Dim i As Integer
            For i = 0 To b.Rows.Count - 1
                b.Rows(i)("ll") = i.ToString()  //你可在此做相应处理
            Next
      

  3.   

    kendison() 的方法很好,还有比较土的就是不更改DataTable,直接在DataGrid中采用如下:
    Text='<%# DataBinder.Eval(Container, "DataItem.布尔值").ToString()=="1"? "已婚":"未婚" %>'
      

  4.   

    vb.net是Text='<%# iif(DataBinder.Eval(Container, "DataItem.布尔值").ToString())="1"? "已婚":"未婚" %>'
      

  5.   

    上面写错,应该是:Text='<%# iif(DataBinder.Eval(Container, "DataItem.布尔值").ToString()="1","已婚","未婚") %>'
      

  6.   

    // 我再三考虑还是用了kendison()提出的第一种方法,并且写了一个方法.
    // 该方法用于组合SQL DECODE子句串.熟悉DECODE方法的人可能知道--->
    // NFname表示生成的新列名;
    // QFname表示请求的字段;
    // DBtname表求数据库表名;
    // VFname表示DBtname中与查询表中的QFname列的值相对应的字段;
    // SFname表示DBtname中要返回与值对应的字符串(如"未婚")的列名。
    // 调用:"select ID,XM,HF,"+DecodeNewCol("StrHF","HF","myDB.Dist","VAL","EXP")+"  from myDB.Users"
    // 此语名最终通过查询词典表(myDB.Dist)生成如下语句:
    // Select ID,XM,HF,Decode('HF','0','未婚','1','己婚','NULL',' ','HF') StrHF from myDB.Userspublic string DecodeNewCol(string NFname,string QFname,string DBtname,string VFname,string SFname)
    {
    string myStr;
    myStr = "DECODE("+QFname+",";
    DataTable myDt45;
    myDt45 = GetDt("select distinct "+VFname+","+SFname+" from "+DBtname);
    foreach(DataRow myDtR in myDt45.Rows)
    {
    myStr=myStr + "'"+myDtR[VFname]+"',"+"'"+myDtR[SFname]+"',";
    }
    myStr = myStr + "NULL,' ',"+QFname+") "+NFname+" ";
    return myStr;
    }