在DataTable中另外增加一个Column,然后将DataGrid中的列和这个新增的Column帮定。
DataColumn dc=new DataColumn("newDC")
dc.DataType=type.of(string);
myDataTable.Columns.add(dc);
foreach(DataRow dr in myDataTable.Rows)
{
if(dr["sign"].toString().Trim()=="1"
 dr["dc"]="已执行";
else
dr["dc"]="未执行";}

解决方案 »

  1.   

    好像可以重载一下DataBinding事件,在里面做处理
      

  2.   

    直接在sql语句里构造select case when sign=1 then '已执行' else '未执行' end from tablename;
      

  3.   

    to:Knight94(愚翁)
    具体该怎么做啊
      

  4.   

    可以在数据库里建一个用户函数,
    如fn_ToChese(sign),函数参数为字段sign的值,这个函数的返回值为字符串。
    函数代码中判断sign=1是否为真,为真返回“已执行”,或則返回为“未执行”在DataGrid1绑定的数据源代码中的SQL语句为
    select dbo.fn_ToChese(sign) as sign, ......
      

  5.   

    具体这样:
    public class CRTextBoxColumn:DataGridTextBoxColumn
    {
    protected override object GetColumnValueAtRow(CurrencyManager cm, int RowNum)
    {
    object oVal=base.GetColumnValueAtRow(cm,RowNum);
    int nVal=(int)oVal;
    if(nVal==0)
    return "未执行";
    else
    return "已执行";
    }
    }使用的时候这样:
    DataGridTableStyle ts =new DataGridTableStyle();
    DataGridColumnStyle cs;//Add the custom column style.
    cs = New CRTextBoxColumn();
    cs.Width = 120;
    cs.MappingName = 字段名称;
    cs.HeaderText = 显示名称;
    ts.GridColumnStyles.Add(cs);ts.MappingName = 表名;     // Map table style to TestTable.
    DataGrid1.TableStyles.Add(ts)
    DataGrid1.DataSource = ds;
      

  6.   

    推荐zwztu() 的方法,简单、方便、稳定
      

  7.   

    重用sql语句写一个table,
    然后在绑定这个table。。
      

  8.   

    就select case when sign=1 then '已执行' else '未执行' end from tablename;
      

  9.   

    支持Knight94(愚翁)!
    固然在SQl中直接用case构造可以实现
    但这样的结果就是在更新数据源的对这一属性更新困难!
    我采用增加新列,就无需考虑更新问题
      

  10.   

    回复人: netpot(netpot)的方法不是挺好的嘛,为什么要那么麻烦?上万条记录的dataTable, 增加一个列,然后赋值,也是瞬间的事。
      

  11.   

    night94的方法很好,你可以从textboxcolumn中继承,干什么都可以呀!!!