【问题标题】:GridView column with checkbox field with SQL带有 SQL 复选框字段的 GridView 列
【发布时间】:2011-12-11 23:07:13
【问题描述】:

我有 2 列的 GridView。

第一列是:test-label(TemplateField)

第二个:checkbox(asp:CheckBoxField),用位列连接sql表(完成)。

我希望在页面加载时 - 页面将检查每一行,其中复选框 = true,test-label.visble 将为 false。

我知道如何使用 SELECT 语句编写代码来检查 SQL 表中的值,但不知道如何在页面加载时检查 gridview 上的每一行。

我该怎么做?

(我不能将 findcontroll 用于复选框,因为它是复选框字段,而不仅仅是“复选框”。

<asp:CheckBoxField DataField="done" SortExpression="done" HeaderText="done?" /> 

那么,我可以在这里做什么?也许用普通的cb替换那个字段? (我不知道如何在常规 cb 上进行数据绑定)。

【问题讨论】:

    标签: c# asp.net sql gridview


    【解决方案1】:

    你可以使用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 用于空检查...我仍然认为检查e.Row.RowType 只是为了后代会很好。
    • CheckBoxField 没有 id 属性。我正在使用: 我能为 findcontrol 做些什么?
    • 我找到了解决方案.. 很简单.. 只需使用 Eval 进行常规 cb,您的代码就完美了。谢谢。
    【解决方案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);
        }
    }
    

    【讨论】:

    • CheckBoxField 没有 id 属性。我正在使用: 我能为 findcontrol 做些什么?
    猜你喜欢
    • 2011-08-04
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多