在线等
webform or winform?
在DataTable中另外增加一个Column,然后将DataGrid中的列和这个新增的Column帮定。
DataColumn dc=new DataColumn
我认为楼上的这种方法并不是很好,如果数据量很大的时候怎么办?
直接在sql语句里构造
select case when sign=1 then 已执行 else 未执行 end from tablename;
可以在数据库里建一个用户函数,
如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;
推荐zwztu() 的方法,简单、方便、稳定
同意楼上!
重用sql语句写一个table,
然后在绑定这个table。。
就select case when sign=1 then 已执行 else 未执行 end from tablename;
使用判断语句处理,
也可以使用数据库表,如楼上。
同意Knight94(愚翁)
支持Knight94(愚翁)!
固然在SQl中直接用case构造可以实现
但这样的结果就是在更新数据源的对这一属性更新困难!
我采用增加新列,就无需考虑更新问题
用IIF也不错啊
回复人: netpot(netpot)的方法不是挺好的嘛,为什么要那么麻烦?上万条记录的dataTable, 增加一个列,然后赋值,也是瞬间的事。
night94的方法很好,你可以从textboxcolumn中继承,干什么都可以呀!!!