C# 如何在asp.net gridview行的底部动态添加按钮

C# 如何在asp.net gridview行的底部动态添加按钮,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在使用asp.net webforms C#gridview。它是一个嵌套的gridview。每个子栅格将只有两行。每个子网格的第二行的最后一列将有一个操作按钮。到目前为止,我已经完成了,一切都很好。根据数据类型,我必须在底部的一些子行中添加四个按钮。我的整个子网格是动态创建的,并添加到父网格中。子网格有六列,我将其创建为边界字段,并将文本设置为值或在第六列中添加按钮。如果需要,我可以将它们更改为模板字段。我不确定是否可以使用模板字段的页脚来添加这四个按钮 谢谢这里没有什么信息,但是由于您声

我正在使用asp.net webforms C#gridview。它是一个嵌套的gridview。每个子栅格将只有两行。每个子网格的第二行的最后一列将有一个操作按钮。到目前为止,我已经完成了,一切都很好。根据数据类型,我必须在底部的一些子行中添加四个按钮。我的整个子网格是动态创建的,并添加到父网格中。子网格有六列,我将其创建为边界字段,并将文本设置为值或在第六列中添加按钮。如果需要,我可以将它们更改为模板字段。我不确定是否可以使用模板字段的页脚来添加这四个按钮


谢谢

这里没有什么信息,但是由于您声明动态创建嵌套网格,我认为您熟悉RowDataBound事件。您也可以使用它来添加按钮。在这个代码段中,我将按钮添加到页脚行,因此您必须在嵌套网格中启用该行:
ShowFooter=“true”

bool primary=false;
受保护的void NestedGridView_RowDataBound(对象发送方,GridViewRowEventArgs e)
{
//检查当前行是数据行还是页脚行
如果(e.Row.RowType==DataControlRowType.DataRow)
{
如果(列==值)
{
主=真;
}
}
else if(e.Row.RowType==DataControlRowType.Footer&&primary==true)
{
//在循环中创建4个按钮
对于(int i=0;i<4;i++)
{
//创建一个新按钮
按钮按钮=新按钮();
button.Text=“button”+(i+1);
//将单击处理程序添加到按钮
按钮。单击+=按钮1\u单击;
//将按钮添加到页脚行
e、 行。单元格[i]。控件。添加(按钮);
}
}
}

由于要向GridView动态添加控件,因此每次加载页面时都必须进行数据绑定,因此请将数据绑定移到
if(!page.IsPostBack){}
检查之外。

谢谢。这是我要走的路线。但我不知道如何动态创建和添加页脚行。简单地执行gvChild.ShowFooter=true是不起作用的。您不需要添加一个,它已经存在了(但没有使用动态创建的网格进行测试)。但是您不需要使用页脚,如果您知道嵌套网格中的行数,您也可以使用
DataControlRowType.DataRow
并添加按钮(如果它是最后一行)。您是对的。现在我看到了页脚。只有当DataRow中的字段值等于“Primary”时,我才必须将按钮添加到页脚。问题是,当我在if(e.Row.RowType==DataControlRowType.Footer)中时,我没有访问DataRow中的值的权限。不管怎样,怎么做?感谢我的回答,基本上是检查行中的某个值,并相应地设置一个
bool
,以检查页脚。不要忘记在父OnRowDataBound中重置bool。
bool primary = false;

protected void NestedGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //check if the current row is a datarow or a footer row
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (column == value)
        {
            primary = true;
        }
    }
    else if (e.Row.RowType == DataControlRowType.Footer && primary == true)
    {
        //create 4 buttons in a loop
        for (int i = 0; i < 4; i++)
        {
            //create a new button
            Button button = new Button();
            button.Text = "Button " + (i + 1);

            //add a click handler to the button
            button.Click += Button1_Click;

            //add the button to the footer row
            e.Row.Cells[i].Controls.Add(button);
        }
    }
}