Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从类文件中找到C#中的控件?_C#_Asp.net_Asp.net Webcontrol - Fatal编程技术网

如何从类文件中找到C#中的控件?

如何从类文件中找到C#中的控件?,c#,asp.net,asp.net-webcontrol,C#,Asp.net,Asp.net Webcontrol,我在这里过得很愉快。我有一个类文件,需要从其中的网页引用控件。我在网上找到了一些例子,但有些地方工作不正常。以下是相关的C#: 我要做的是将一些数据绑定到我的类文件中的这个DropDownList。问题是在那里的第三行,我得到了旧的: 对象引用未设置为对象的实例 如果我返回SqlDataReader的FieldCount,我得到了正确的字段数,因此我认为它得到了数据;我想我只是找不到控制点。如何在类文件中找到控件ddlCrimeType 如果你还有什么需要知道的,请告诉我 更新: 控件位于内容页

我在这里过得很愉快。我有一个类文件,需要从其中的网页引用控件。我在网上找到了一些例子,但有些地方工作不正常。以下是相关的C#:

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

对象引用未设置为对象的实例

如果我返回
SqlDataReader
FieldCount
,我得到了正确的字段数,因此我认为它得到了数据;我想我只是找不到控制点。如何在类文件中找到控件
ddlCrimeType

如果你还有什么需要知道的,请告诉我

更新:

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

DropDownList ddl = (DropDownList)Master.FindControl("ContentPlaceHolder1").FindControl("ddlCrimeType");
我只需要在我的类文件中找出如何做到这一点。现在,我被告知:

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

好的,事实证明,我需要为母版页/内容页关系适当地引用控件
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传递给方法,而不是像在以前的代码中那样指定它


感谢所有帮助过我的人!祝你今天愉快

在我看来,
ddl
null
。你用调试器检查过你的代码了吗?代码在哪里运行,什么时候运行,你为什么这样做?@Brandon这意味着ddl是空的,不是吗?如果你在那一行放一个断点,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();