WinForm中DataGridView列的显示问题

yihis 2007-03-25 11:37:29
比如数据库里列保存的是“1”或“0”,我要显示“是”或“否”,我有一个方法string DataStringFormat(string getData)返回相应汉字字符的,请问如何设置DataGridView列应用这一方法,最好是设置方式而不是编码方式。
...全文
643 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yihis 2007-03-26
  • 打赏
  • 举报
回复
webform这样没错,但是winform我不知道该写在哪
wangkun9999 2007-03-26
  • 打赏
  • 举报
回复
自定义或绑定列都一样,反正都要在前台显示状态吗;


如果是多元的话可以在后台写个方法:
public string changstr(string test)
{
if(test=="1")
{
return "是";
}
if(test=="0")
{
return "否";
}
....(其它)

}

前台调用:
<%# changstr(Convert.ToString(DataBinder.Eval(Container.DataItem,"flag")))%>...
北京的雾霾天 2007-03-26
  • 打赏
  • 举报
回复
对,就是在CellFormatting事件里处理就可以了.
HSB19820706 2007-03-26
  • 打赏
  • 举报
回复
再加个表,转换下
yihis 2007-03-26
  • 打赏
  • 举报
回复
sql语句我曾经想过,但是不大可行,因为字段太多(64个),这样sql语句就太庞大了,而且由于是低版本的access,没办法用存储过程。项目追的很紧,暂时先这样对付一下,以后有时间再研究吧,谢谢大家。
BT9527 2007-03-26
  • 打赏
  • 举报
回复
学习
icwin 2007-03-26
  • 打赏
  • 举报
回复
mark
yumanqing 2007-03-26
  • 打赏
  • 举报
回复
我认为有几种方法:
1、查询语句用
select (case flag when 1 then '是' when 0 then '否' end) as Flag from table;
2.在程序加载数据的时候判断,替换,
leixueqiyi 2007-03-26
  • 打赏
  • 举报
回复
可以把该列设置成CheckBox列

/// <summary>
/// 設置datagridview中某個欄位為CheckBox
/// </summary>
/// <param name="iColumn">需要更改的欄位號</param>
public void SetCheckBoxColumns(int iColumn, string iColName)
{
this.dataGridView1.Columns.RemoveAt(iColumn);
DataGridViewCheckBoxColumn checkboxColumn = new DataGridViewCheckBoxColumn();
checkboxColumn = CreateCheckBoxColumn(iColName);
this.dataGridView1.Columns.Insert(iColumn, checkboxColumn);
}

/// <summary>
/// 取得datagridview中一個CheckBox欄位的屬性

/// </summary>
/// <returns>格式化以後的datagridview的CheckBoxColumn</returns>
public virtual DataGridViewCheckBoxColumn CreateCheckBoxColumn(string iCol)
{
DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
{
column.DataPropertyName = iCol;
column.ThreeState = false;
column.TrueValue = "Y";
column.FalseValue = "N";
column.HeaderText = ResourceFactory.GetMultilanguage(iCol);
}
return column;
}
liujia_0421 2007-03-26
  • 打赏
  • 举报
回复
最好的办法就是如楼主说的在CellFormatting事件中添加....

如果觉得效率低,这样行不行...即在从数据库中取出数据的时候设置一下...

for exampel:

select (case flag when 1 then '是' when 0 then '否' end) as Flag from table;

然后再绑定到DataGridView上即可..
yihis 2007-03-26
  • 打赏
  • 举报
回复
先说一下我现在的权宜之计,我是在CellFormatting事件里添加的
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "过荷保护")
{
if (e.Value.ToString() == "0")
{
e.Value = "状态0";
}
else if (e.Value.ToString() == "1")
{
e.Value = "状态1";
}
}
}
catch { }
}
虽然达到了我要的效果,但是表格数据一旦比较庞大,花费的时间就会成倍增加。我想要的就是类似web里面的那种方法,但是在winform里就不知道该如何去搞了
yihis 2007-03-25
  • 打赏
  • 举报
回复
比较急,在线等
yihis 2007-03-25
  • 打赏
  • 举报
回复
另外有可能是多元的,比如数据库里有个表示状态的字段,值为数字如: 1 2 3 4 ………… 绑定到datagridview显示时要跟据值改成:状态1 状态2 状态3 …………
yihis 2007-03-25
  • 打赏
  • 举报
回复
请问在哪个属性里更改?是自定义列还是绑定列?
wangkun9999 2007-03-25
  • 打赏
  • 举报
回复
用三元运算符,形如:

Bindvalue=="1"?"是":"否"

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧