Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何访问Web窗体中GridView模板字段的属性_C#_.net_Gridview_Webforms - Fatal编程技术网

C# 如何访问Web窗体中GridView模板字段的属性

C# 如何访问Web窗体中GridView模板字段的属性,c#,.net,gridview,webforms,C#,.net,Gridview,Webforms,我有.NET关于WebForms和GridView的项目。GridView由my DB中的数据填充。DB的列名为password,但在GridView上,此列设置为Visible=“False”。当我单击命令按钮“编辑”时,所有框都准备好用新数据填充,但列密码是不可见的 我的问题是:当我单击“编辑”时,如何(或我可以)使带有密码的列可见并准备好用新密码填充文本框,当然,我也不想显示其他密码。摘要我是否可以访问此TempleteField/ItemTemplete的属性?无需设置Visible=“

我有.NET关于WebFormsGridView的项目。GridView由my DB中的数据填充。DB的列名为password,但在GridView上,此列设置为Visible=“False”。当我单击命令按钮“编辑”时,所有框都准备好用新数据填充,但列密码是不可见的


我的问题是:当我单击“编辑”时,如何(或我可以)使带有密码的列可见并准备好用新密码填充文本框,当然,我也不想显示其他密码。摘要我是否可以访问此TempleteField/ItemTemplete的属性?

无需设置
Visible=“false”
属性。只需欺骗GridView在正常显示模式下隐藏列,在编辑模式下显示列即可


假设
Password
列是第三列,则处理GridView事件以隐藏此列:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            // Just return in case GridView is rendering in Edit Mode
            if (GridView1.EditIndex >= 0)
                return;

            // In case GridView is rendering in Normal state
            // Hide the Columns you don't want to display
            if ((e.Row.RowState == DataControlRowState.Normal ||
                 e.Row.RowState == DataControlRowState.Alternate) &&
            ( e.Row.RowType == DataControlRowType.DataRow || 
              e.Row.RowType == DataControlRowType.Header))
            {
                // Hide the Password Column
                e.Row.Cells[2].Visible = false;
            }
        }
如果对密码列使用TemplateField,则可以使用GridView的数据绑定事件将其隐藏为:

protected void GridView1_DataBound(object sender, EventArgs e)
{
       if (GridView1.EditIndex >= 0)
            return;
       GridView1.Columns[2].Visible = false;            
}

现在,当GridView进入编辑模式(点击编辑按钮等)时,它将在编辑模式下显示
密码
列。

是的,您可以借助它来完成此操作,它将非常适合,但我不理解某些内容。好的,当它在正常模式下渲染时,它不会显示密码的列单元格,但当我在编辑模式下时,我也不会显示它们。当我单击“编辑”按钮显示它们(单元格)时,如何解决此问题?非常感谢:)感谢您的帮助。您是否从GridView标记中删除了属性:Visible=“false”??在这里,您将仅以编程方式隐藏列,如上所示。您的密码列是BoundField还是TemplateField?我的密码列是TemplateField,是的,我删除了property:Visible=false这是它的外观,在代码后面是你告诉我的方法,使用如图所示的第二种方法:GridView1_DataBoundI使用调试器对其进行了多次检查。它可以工作,但问题是当我点击编辑模式时,事件参数从-1变为行索引,列保持不可见。我想当我处于编辑模式时,最好将列可见性设置为true。谢谢你为我花了些时间。