在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"]="未执行";}
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"]="未执行";}
具体该怎么做啊
如fn_ToChese(sign),函数参数为字段sign的值,这个函数的返回值为字符串。
函数代码中判断sign=1是否为真,为真返回“已执行”,或則返回为“未执行”在DataGrid1绑定的数据源代码中的SQL语句为
select dbo.fn_ToChese(sign) as sign, ......
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;
然后在绑定这个table。。
固然在SQl中直接用case构造可以实现
但这样的结果就是在更新数据源的对这一属性更新困难!
我采用增加新列,就无需考虑更新问题