c# - 如何像 Repeater 一样运行 GridView?

标签 c# asp.net gridview

您好,我正在使用 Gridview,需要更改元素的可见属性 绑定(bind)时在所有行中。

我试图通过代码隐藏来改变,但是, 只有第一条记录的元素的属性发生了变化。

该元素是一个面板, 我需要在所有记录上更改的属性是; 可见 属性。

我怎样才能像 Repeater 一样运行这个 GridView,以便能够在绑定(bind)时更改所有 Panel 元素的 Visible 属性?

我的代码如下:

ASPX:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
              GridLines="None" DataKeyNames="ID"
              AllowPaging="True" OnDataBinding="GridView1_DataBinding">                    
   <Columns>     
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Panel ID="Panel1" runat="server" Visible="false">
                    <!-- code ... -->
                </asp:Panel>
                <asp:Panel ID="Panel2" runat="server" Visible="false">
                    <!-- code ... -->
                </asp:Panel>
            </ItemTemplate>                            
        </asp:TemplateField>
    </Columns>
</asp:GridView>

CS:

private void Method1(string Key)
{   
    if (Key==1)
    {
        Panel Panel1 = GridView1.Controls[0].Controls[1].FindControl("Panel1") as Panel;
        Panel1.Visible = true;
    }
    else
    {
        Panel Panel2 = GridView1.Controls[0].Controls[1].FindControl("Panel2") as Panel;
        Panel2.Visible = true;
    }
}
protected void GridView1_DataBinding(object sender, EventArgs e)
{
    Method1(1);
}

最佳答案

您的问题是您正在使用 OnDataBinding 事件。这只会发生一次——当 GridView 有数据绑定(bind)到它时。您需要的是 OnRowDataBound 事件。这将每行触发一次。

OnRowDataBound="GridView1_RowDataBound"

然后在后面的代码中处理它,找到每一行中的面板。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        Panel Panel1 = (Panel)e.Row.FindControl("Panel1");
        //So on and so forth...
    }
}

关于c# - 如何像 Repeater 一样运行 GridView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970888/

相关文章:

c# - .Net 属性 setter 是否曾被隐式调用?

c# - 为什么我的计数器不增加?

c# - 如何选择特定的下拉列表项目

c# - GridView 中的按钮 : How do I know which Item?

c# - 将 Html 呈现或转换为 'formatted' 文本 (.NET)

c# - 将 DataGridViewAutoFilter 与 Equin BindingListView 结合使用

c# - 使用 Entity Framework 将 MySql 数据转换为 Microsoft Sql

c# - 从外部线程关闭模式对话框 - C#

C# 字典性能

asp.net - 如何在启用溢出属性时固定 gridview 标题