0

我在这里玩得很开心。我有一个类文件,我需要从其中的网页中引用一个控件。我在网上找到了一些例子,但有些东西不能正常工作。这是相关的C#:

Page page = (Page)HttpContext.Current.Handler;
DropDownList ddl = (DropDownList)page.FindControl("ddlCrimeType");
ddl.DataSource = read; // read is a SqlDataReader.
ddl.DataBind();

我想要做的是DropDownList在我的类文件中将一些数据绑定到这个。问题是在那里的第三行,我得到了旧的:

你调用的对象是空的。

如果我返回 的FieldCountSqlDataReader我会得到正确数量的字段,所以我认为它有数据;我只是没有找到控制,我猜。如何ddlCrimeType在我的类文件中找到控件?

如果您还有其他需要知道的,请告诉我。

更新:

该控件位于内容页面中。当我在页面的代码隐藏中编写类似的代码来做同样的事情时,我必须这样做:

DropDownList ddl = (DropDownList)Master.FindControl("ContentPlaceHolder1").FindControl("ddlCrimeType");

我只需要弄清楚如何在我的类文件中做到这一点。现在,有人告诉我:

The name 'Master' does not exist in the current context.
4

1 回答 1

0

好的,事实证明,我需要为母版页/内容页关系适当地引用控件。 ddl在我的原始代码中保持为空,因为我没有从母版页的底部找到控件。这是实际成功的代码:

var pageHandler = HttpContext.Current.CurrentHandler;
Control ctrl = ((System.Web.UI.Page)pageHandler).Master.FindControl("ContentPlaceHolder1").FindControl(strControlIDToBind);
DropDownList ddl = (DropDownList)((System.Web.UI.Page)pageHandler).Master.FindControl("ContentPlaceHolder1").FindControl(strControlIDToBind);
ddl.DataSource = read;
ddl.DataBind();

此外,我将控件的 ID 传递给方法,而不是像我之前的代码中那样指定它。

感谢所有帮助过的人!祝你有美好的一天!

于 2014-05-29T20:01:45.463 回答