我有2列GridView。
第一列是:test-label(TemplateField)
第二个:复选框(asp:CheckBoxField),用位列(已完成)连接到sql表。
我希望在页面加载时 - 页面将检查每一行,其中checkbox = true,test-label.visble将为false。
我知道如何使用SELECT语句编写代码来检查SQL表中的值,但是不知道如何在页面加载时检查gridview上的每一行。
我该怎么做?
(我不能使用findcontroll作为复选框,因为它是复选框,而不仅仅是“复选框”。
<asp:CheckBoxField DataField="done" SortExpression="done" HeaderText="done?" />
所以,我能在这做什么?也许用常规cb替换那个字段? (我不知道怎么做databind - 在常规的cb上)。
答案 0 :(得分:2)
您可以使用GridView.RowDataBound Event
所以你可以做点什么
protected void GVRowDataBound(object sender, GridViewRowEventArgs e)
{
var check = (CheckBox) e.Row.FindControl("ID"); // ID is id of the checkbox
var lable = (Label) e.Row.FindControl("LableID");
if(check != null && lable != null)
{
if(check.Checked)
{
lable.Visible = false;
}
}
}
答案 1 :(得分:2)
您无法在Page.Load
中执行此操作,因为GridView
尚未数据绑定。
尝试处理GridView.RowDataBound
。
代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox cb = (CheckBox)e.Row.FindControl("checkbox");
Label lbl = (Label)e.Row.FindControl("test-label");
lbl.Visible = !(cb.Checked);
}
}