DataGridView能做到这个简单的问题么

csdn小虫 2010-02-24 02:43:02
vs2005开发winform程序
遇到这样一个问题
数据库表
t1(name,sex) //0代表女 1代表男
a 0
b 1

DataGridView中 增加两个列 分别绑定的是name sex

如果查询语句 直接 写 select name,sex from t1
查询语句不改成这样的select name,case sex when 0 then '女' else '男' end sex from t1

怎样才能让 表格根据 sex列的内容0 1 来 显示 女 或者 男,
而不是数据表的数据 0 1

急 急 急
...全文
209 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
book_xuanxiang008 2010-02-25
  • 打赏
  • 举报
回复
if (e.RowIndex != -1 && e.ColumnIndex != -1)
{
if (this.DataGridView.Columns[e.ColumnIndex].Name == "Sex")
{
if (this.DataGridView.Rows[e.RowIndex].Cells["Sex"].Value==“0” )
{this.DataGridView.Rows[e.RowIndex].Cells["Sex"].Value =“女”}
else
{this.DataGridView.Rows[e.RowIndex].Cells["Sex"].Value =“男”}
}
}


试试看,直接原来有的列改值,不加什么新列。

还可以建个T1类和Sex类,T1的string sex字段改成Sex sex类型,后面还有好多,太麻烦了,要用到泛型集合
我是谁 2010-02-25
  • 打赏
  • 举报
回复
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField DataField="sex" DataFormatString="{0:男;;女}
"
HeaderText="性别" />
</Columns>
</asp:GridView>
这样子就行了
GZHUCs 2010-02-25
  • 打赏
  • 举报
回复
在实体添加个字段来显示男女就好了在性别那个列绑定你添加的字段就好了,if(sex=0)xingbie=女(xingbie为你添加的字段)
titth 2010-02-25
  • 打赏
  • 举报
回复
引用 11 楼 yuimison 的回复:
6楼的办法 也不行呀
如果我把 oldColumn隐藏掉的话  newColumn就不显示了 “男”  “女”
oldColumn如果不隐藏的话  newColumn就有显示


在DataGridView中的 oldColumn 列的 DataProperName 属性中 写入 ‘sex’即返回数据源的性别例即可
csdn小虫 2010-02-25
  • 打赏
  • 举报
回复
6楼的办法 也不行呀
如果我把 oldColumn隐藏掉的话 newColumn就不显示了 “男” “女”
oldColumn如果不隐藏的话 newColumn就有显示
狂想者 2010-02-24
  • 打赏
  • 举报
回复
6楼的不错,可以解决问题。。。。。
路伊阑珊 2010-02-24
  • 打赏
  • 举报
回复
问号表达式 仅供参考
路伊阑珊 2010-02-24
  • 打赏
  • 举报
回复
可以考虑使用问好表达式 仅供参考
iGouzy 2010-02-24
  • 打赏
  • 举报
回复
试了一下,没有什么简单的办法(除非你能接受 ComboBox 列),6 楼是正解
titth 2010-02-24
  • 打赏
  • 举报
回复
1.把绑定的那例隐藏掉 ID为 clmOld
2.然后自己在新追加一列 ID为 clmNew
3.在DataGridView 的 cellFormatting 事件中写入
if (e.RowIndex != -1 && e.ColumnIndex != -1)
{
if (this.DataGridView.Columns[e.ColumnIndex].Name == "clmNew")
{
if (this.DataGridView.Rows[e.RowIndex].Cells["clmOld"].Value==“0” )
{this.DataGridView.Rows[e.RowIndex].Cells["clmNew"].Value =“女”}
else
{this.DataGridView.Rows[e.RowIndex].Cells["clmNew"].Value =“男”}
}
}
cobra009 2010-02-24
  • 打赏
  • 举报
回复
引用楼主 yuimison 的回复:
vs2005开发winform程序
遇到这样一个问题
数据库表
t1(name,sex) //0代表女 1代表男
a  0
b  1

DataGridView中 增加两个列 分别绑定的是name  sex

如果查询语句 直接 写 select name,sex from t1
查询语句不改成这样的select name,case sex when 0 then '女' else '男' end sex from t1

怎样才能让 表格根据 sex列的内容0  1 来 显示  女 或者 男,
而不是数据表的数据 0  1

急  急  急

有个疑问,为什么在数据库中特意把性别用0,1表示而不用男女表示,为什么要自找麻烦,这样做的结果会导致datagridview修改数据到数据库遇到麻烦
nimingxin1987 2010-02-24
  • 打赏
  • 举报
回复
if (dataGridView1[1, i].Value==0)
这句应该是这样了
nimingxin1987 2010-02-24
  • 打赏
  • 举报
回复
一.一
添加一个没有绑定数据的空白列
然后把sex这列隐藏

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1[1, i].Value.ToString() == "0")
{
dataGridView1[2, i].Value = "男";
}
else
{
dataGridView1[2, i].Value = "女";
}
}
csdn小虫 2010-02-24
  • 打赏
  • 举报
回复
楼上的方法 不行呀。 我的表格是绑定数据源的 dataGridView1.DataSourse=MyDataTable.DefaultView;

并且 数据库中 sex是 tinyint 类型的。 如果用你的方法 会出现错误 提示 不能将"男" 转成Byte 之类的错误提示。
nimingxin1987 2010-02-24
  • 打赏
  • 举报
回复
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1[1, i].Value.ToString() == "0")
{
dataGridView1[1, i].Value = "男";
}
else
{
dataGridView1[1, i].Value = "女";
}
}

110,538

社区成员

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

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

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