gpt4 book ai didi

c# - 在gridview中动态添加控件

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:41 25 4
gpt4 key购买 nike

我需要动态地向 GridView 添加控件,所以我添加了一个 PlaceHolder,但它给我一个错误。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
PlaceHolder plachldr = e.Row.FindControl("PlaceHolder2") as PlaceHolder;
Button btn = new Button() { ID = "btnShhow", Text = "Show" };
plachldr.Controls.Add(btn);

PlaceHolder placeholder = e.Row.FindControl("PlaceHolder1") as PlaceHolder;
TextBox txt1 = new TextBox();
placeholder.Controls.Add(txt1);
}

将控件添加到 PlaceHolder 时,出现以下错误:

Object reference not set to an instance of an object.

这是我的 GridView 的标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnSelectedIndexChanging="GridView1_SelectedIndexChanging" onrowdatabound="GridView1_RowDataBound">    
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Salary" HeaderText="Salary" />
<asp:TemplateField>
<ItemTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

最佳答案

您需要检查 plachldr 或占位符是否为 null 并检查 RowType

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if( if (e.Row.RowType == DataControlRowType.DataRow)
{
PlaceHolder plachldr = e.Row.FindControl("PlaceHolder2") as PlaceHolder;
if(plachldr!=null)
{
Button btn = new Button() { ID = "btnShhow", Text = "Show" };
plachldr.Controls.Add(btn);
}

PlaceHolder placeholder = e.Row.FindControl("PlaceHolder1") as PlaceHolder;
if(placeholder!=null)
{
TextBox txt1 = new TextBox();
placeholder.Controls.Add(txt1);
}
}

}

关于c# - 在gridview中动态添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7343943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com