问题描述:
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)这个地方应该如何写
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)这个地方应该如何写
不应该是单个的位吗
你的数据库值应该用T代替true,用F代替FALSE吧
这样判断值是T还是F啊
应该有的
true和false也不过就是 0和1
sqlServer2005中,bit类型那里我写入的是"True"和"Flase"
我就是不知道(1)那个判断的地方应该怎么判断
或者直接判断Value
if (GridView1.Rows[i].Cells[5].Value== True)
Value = True;
Web中你试试看可不可以……
table cells 并不包含value这个属性
这个值是什么?确定是这列么
这个是表格上的显示的文本值
这么说吧
for (int i = 0; i < GridView1.Rows.Count;i++ )
{GridView1.Rows[i].Cells[5].Text = "111";
}
可以把表显示的第五列的所有的值改成“111”
“确定是这列么“
我十分确定是这一列
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 = "已归还";
}
}
for (int i = 0; i < GridView1.Rows.Count;i++ )
{GridView1.Rows[i].Cells[5].Text = "已借出";
}
这样将所有的第五列数据都变成了“已借出”
第五列是不是GridView1.Rows[i].Cells[4].Text ?
什么都不改的话这里如果显示的是true/false/1/0之类的话:
if(Convert.ToBooleen(GridView1.Rows[i].Cells[5].Text)) //手写,ToBooleen可能有错
你没有说的point,第五列还是第四列我不关心,就假设是第四列吧
什么都不写,表将会显示CheckBox那样的东东
如果是True,checkBox会打上勾
如果false,checkBox不会打勾
if (cb.Selected)//Selected?
因为 GridView1.Rows[i].Cells[5].Text这里是字符串是空的。。
我想当然了
如何在gridView中bit类型的值
从你问的问题来说,我有以下建议:
1.你可以深入了解一下gridview..模板列,代码赋值,gridview有数据绑定事件,可以在代码上根据数据值自由赋值
2.数据库里的bool字段用着麻烦就不用,tinyint 用0,1表示
习惯性小评一下:
这个问题最后我采用绕道的办法解决了:在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分
分不多,但是一番心意,请笑纳
if (cb.Checked)
已验证!