gpt4 book ai didi

c# - ASP.net .FindControl() 和 GridView 返回 null

转载 作者:行者123 更新时间:2023-11-30 16:21:17 25 4
gpt4 key购买 nike

我查看了网站上的页面,但似乎找不到足够通用的内容来解决我的问题,所以希望有人知道该怎么做。我正在调试其他人编写的一些代码,但遇到了 GridView 语句的问题。

我的问题是我的 gridview 总是空的。我在 LoginView 中的面板中声明了 GridView,它基本上设置如下。

<asp:LoginView ID="LoginView1" runat="server" onviewchanged="LoginView1_ViewChanged">
<AnonymousTemplate>&nbsp;Please <a href="../Default.aspx"> Log In </a></AnonymousTemplate>
<LoggedInTemplate>
<asp:Panel ID="Panel1" runat="server">
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" CellPadding="2"
DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Horizontal"
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None"
BorderWidth="1px" Width="970px" OnRowCommand="GridView1_RowCommand"
PageSize="40" AllowSorting="True">

之后,在 C# 文件中,我有以下语句

   GridView GridView1 = (GridView)LoginView1.FindControl("GridView1");

当我去运行代码时,我在 GridView1 上得到了 NullRefrenceException。我是否需要深入了解面板以引用 GridView,或者我是否应该能够从主 LoginView1 部分访问它?

编辑:更改我的代码片段以包含匿名模板的信息

最佳答案

查找子控件的控件是一个经常出现的问题。您可以考虑一种扩展方法,这样您就可以轻松地调用 Jeff Atwood 的递归子控件(如 Simon 的回答中所引用)......或您编写的任何版本。这只是使用另一篇文章中的代码的示例:

GridView GridView1 = (GridView)LoginView1.FindControlRecursive("GridView1");

这是代码。

public static class WebControlExtender
{
public static Control FindControlRecursive(this Control root, string id)
{
if (root.ID == id)
{
return root;
}

foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}

return null;
}
}

关于c# - ASP.net .FindControl() 和 GridView 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336839/

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