GridView中的bit类型如何进行判断

warriormark 2010-03-24 09:10:17
问题描述:
1 工程是C#WebForm,数据库是SqlServer 2005
2 数据库表单中有个字段名叫status,类型为bit(boolean)
3 CString sql="select * from......"
4 GridView1.DataSource = ds;
GridView1.DataBind();
5 假设status是第五列
for (int i = 0; i < GridView1.Rows.Count;i++ )
{

GridView1.Rows[i].Cells[5].Text = "已借出";


}
这样将所有的第五列数据都变成了“已借出”
6 现在我想根据bit的值来将结果变成对应的“已借出”或“已归还”
即 如下这个模样
for (int i = 0; i < GridView1.Rows.Count;i++ )
{
if (GridView1.Rows[i].Cells[5].Text == "True ")//(1)关键是这里
{
GridView1.Rows[i].Cells[5].Text = "已借出";
}
else
{
GridView1.Rows[i].Cells[5].Text = "已归还";
}

}
但是 (1)语句并没有起到判断的作用,请问(1)这个地方应该如何写
...全文
287 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixing01 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sprc_lcl 的回复:]

C# code
CheckBox cb = (CheckBox)GridView1.Rows[i].Cells[5].ChildControls[0];//ChildControls?
if (cb.Selected)//Selected?
[/Quote]
CheckBox cb = (CheckBox)GridView1.Rows[i].Cells[5].Controls[0];
if (cb.Checked)
已验证!
sprc_lcl 2010-03-24
  • 打赏
  • 举报
回复
13#应该可以。
从你问的问题来说,我有以下建议:
1.你可以深入了解一下gridview..模板列,代码赋值,gridview有数据绑定事件,可以在代码上根据数据值自由赋值
2.数据库里的bool字段用着麻烦就不用,tinyint 用0,1表示
warriormark 2010-03-24
  • 打赏
  • 举报
回复
现在问题变为:
如何在gridView中bit类型的值
warriormark 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sprc_lcl 的回复:]
if (GridView1.Rows[i].Cells[5].Text == "True ")//(1)关键是这里
什么都不改的话这里如果显示的是true/false/1/0之类的话:
if(Convert.ToBooleen(GridView1.Rows[i].Cells[5].Text)) //手写,ToBooleen可能有错
[/Quote]
很可惜。。你说的“没错“,但是解决不了我的问题
因为 GridView1.Rows[i].Cells[5].Text这里是字符串是空的。。
我想当然了
sprc_lcl 2010-03-24
  • 打赏
  • 举报
回复
CheckBox cb = (CheckBox)GridView1.Rows[i].Cells[5].ChildControls[0];//ChildControls?
if (cb.Selected)//Selected?
warriormark 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sprc_lcl 的回复:]
if (GridView1.Rows[i].Cells[5].Text == "True ")//(1)关键是这里
什么都不改的话这里如果显示的是true/false/1/0之类的话:
if(Convert.ToBooleen(GridView1.Rows[i].Cells[5].Text)) //手写,ToBooleen可能有错
[/Quote]

什么都不写,表将会显示CheckBox那样的东东
如果是True,checkBox会打上勾
如果false,checkBox不会打勾
warriormark 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wanghuajie_122301510 的回复:]
5 假设status是第五列
for (int i = 0; i < GridView1.Rows.Count;i++ )
{

GridView1.Rows[i].Cells[5].Text = "已借出";


}
这样将所有的第五列数据都变成了“已借出”


第五列是不是GridView1.Rows[i].Cells[4].Text ?
[/Quote]

你没有说的point,第五列还是第四列我不关心,就假设是第四列吧
sprc_lcl 2010-03-24
  • 打赏
  • 举报
回复
if (GridView1.Rows[i].Cells[5].Text == "True ")//(1)关键是这里
什么都不改的话这里如果显示的是true/false/1/0之类的话:
if(Convert.ToBooleen(GridView1.Rows[i].Cells[5].Text)) //手写,ToBooleen可能有错
悟__空 2010-03-24
  • 打赏
  • 举报
回复
5 假设status是第五列
for (int i = 0; i < GridView1.Rows.Count;i++ )
{

GridView1.Rows[i].Cells[5].Text = "已借出";


}
这样将所有的第五列数据都变成了“已借出”


第五列是不是GridView1.Rows[i].Cells[4].Text ?
yangchu1986 2010-03-24
  • 打赏
  • 举报
回复
可以将第五列在GridView1中编辑列,转换成TemPlateFiled在通过在GridView1中用FindControl的方式找到控件进行更改。可以试一试用这个方法。
for (int i = 0; i < this.GridView1.Rows.Count;i++ )
{
Label label1 = this.GridView1.Rows[i].FindControl("Lable的Id") as Label;
if (label1.Text == "True")
{
label1.Text = "已借出";
}
else
{
label1.Text = "已归还";
}
}
warriormark 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ivws_19 的回复:]
GridView1.Rows[i].Cells[5].Text
这个值是什么?确定是这列么
[/Quote]

这个是表格上的显示的文本值
这么说吧
for (int i = 0; i < GridView1.Rows.Count;i++ )
{

GridView1.Rows[i].Cells[5].Text = "111";


}
可以把表显示的第五列的所有的值改成“111”


“确定是这列么“
我十分确定是这一列
ivws_19 2010-03-24
  • 打赏
  • 举报
回复
GridView1.Rows[i].Cells[5].Text
这个值是什么?确定是这列么
warriormark 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lijin1985_ 的回复:]
你应该把这列编辑成模板列,
或者直接判断Value
if (GridView1.Rows[i].Cells[5].Value== True)
[/Quote]

table cells 并不包含value这个属性
llf94632525 2010-03-24
  • 打赏
  • 举报
回复
winform中可以这么写:
Value = True;
Web中你试试看可不可以……
lijin1985_ 2010-03-24
  • 打赏
  • 举报
回复
你应该把这列编辑成模板列,
或者直接判断Value
if (GridView1.Rows[i].Cells[5].Value== True)
warriormark 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mervyn807 的回复:]
bit有true的说法吗
不应该是单个的位吗
你的数据库值应该用T代替true,用F代替FALSE吧
这样判断值是T还是F啊
[/Quote]

应该有的
true和false也不过就是 0和1
sqlServer2005中,bit类型那里我写入的是"True"和"Flase"
我就是不知道(1)那个判断的地方应该怎么判断
缭绕飘渺 2010-03-24
  • 打赏
  • 举报
回复
bit有true的说法吗
不应该是单个的位吗
你的数据库值应该用T代替true,用F代替FALSE吧
这样判断值是T还是F啊
warriormark 2010-03-24
  • 打赏
  • 举报
回复
结贴了。
习惯性小评一下:
这个问题最后我采用绕道的办法解决了:在SQL语句中将表单的值直接改了。就是说在gridView1.dataBind()之前就已经完成了修改,而不是我发帖需求的、在gridView1.dataBind()之后。

#8的方法我试了,卡在"this.GridView1.Rows[i].FindControl("Lable的Id") ".我跟踪调试了下,这个“Lable的id”我写的是表的“列名”,我跟踪了下,发现this.GridView1.Rows[i].FindControl("Lable的Id") .Text结果很怪,匪夷所思。
#13最接近真相。我查了MSDN,确实像#13那样,可以将一个string变量转变成boolean变量。很可惜,我获得的gridView.text==null 。我自己分析,GridView 和 通过SQL 查询数据库生成的搜索结果集是两个东西,是后来我通过GridView.DataBind()将他们绑定在的一起。GridView.text只负责显示,而不是数据源。

#8 5分
#13 15分
分不多,但是一番心意,请笑纳

110,525

社区成员

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

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

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