- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 OnLoad 事件中有一个 FindControl 来在页面上找到我的按钮,即:
protected override void OnLoad(EventArgs e)
{
DataBind();
control button = Page.FindControl("myButton");
}
在我的 aspx 页面上有
<asp:Button runat="server" ID="myButton" />
如果我只有这个,一切正常,当我传入 OnLoad 时,按钮不为空,我可以执行我想要的。问题是当我在我的 aspx 中添加动态文本时:
<asp:Button runat="server" ID="myButton" Text='<%# "Here is my dynamic text pulled from a XML" %>' />
然后 FindControl 什么也没找到,按钮为空。
在 aspx 上添加绑定(bind)服务器标签不会延迟任何事情吧?当我检查 Page 对象时,我在 Controls 集合中有一些控件,但找不到 myButton。
知道我做错了什么吗?
编辑
人们似乎认为我的代码示例是我的真实代码,但它不是,所以我使用 FindControl,因为我需要使用 FindControl,因为我有嵌套控件,我无法直接访问它,所以我使用绑定(bind),因为我要放置的动态文本位于 ContentTemplate 中,我可以在其他页面 aspx 中覆盖它。
我问的问题更具体是因为我已经追踪到我的 FindControl 返回 null 的问题,因为新实现的行为是绑定(bind)。
改进代码示例不是解决方案,也不是对以下事实的解释:如果我在我的 aspx 页面中放置 <%# %> 标记,OnLoad 事件中的 FindControl 将返回 null。
编辑 2
单独的绑定(bind)标签似乎不是罪魁祸首,而是用来填充它们的 DataBind()。无论我是否有绑定(bind)标签,将 DataBind() 放在 FindControl 之前都会使 myButton 为空。对代码示例进行了更正。
最佳答案
In here MSDN 说:
PreRender : Each data bound control whose DataSourceID property is set calls its DataBind method.
看起来您没有使用数据绑定(bind)控件的 DataSourceID,但将 FindControl 代码移动到 PreRender 事件可能会有所帮助。
关于c# - FindControl 不适用于绑定(bind)服务器标签,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769396/
我有一个下拉列表: 一个可爱的小家伙。我有一些代码可以找到它: DropDownList myControl1 = (DropDownList)Page.FindC
我有一个列出客户项目的中继器,其中一个是用于获取更多信息的按钮。当用户单击该按钮时,用户控件会立即出现在它的下方。我希望用户控件在再次单击按钮时关闭。我最初切换可见性服务器端,但我现在不能使用它,因为
我的页面,Default.aspx 继承自 BasePage.cs。 在基本页面中,我试图找到实际上位于 Default.aspx 中的控件 Label1。 var labelControl = (T
我正在处理一个继承基页的页面。 aspx 页面包含一个控件,该控件使用 xslt 将 xml 文档转换为 html 标记。在该文档中,我使用了以下内容: 我正在尝
我正在设置一个 GridView ,以便我可以选择多个事件并将它们的 EventID 添加到逗号分隔的字符串中。这将是一项订阅服务,因此我需要知道用户想要订阅哪些事件。 我使用模板字段添加了一个复选框
示例代码: var div = new HtmlGenericControl("div"); div.Controls.Add(new Literal() { ID = "litSom
在一个网站上,我只使用一个单一级别的母版页,在使用该母版的页面中,我可以这样做。Master.FindControl("controlName") 来访问控件。工作正常。 但是,在具有两个母版页级别的
我想在 DDL OnSelectedIndexChanged 事件之后在 griview 上找到控制。其中目标控件位于 DDL 所在的行索引上。 这是我的代码; protected void Page
出现以下错误 找到具有相同ID'ltlItemCode'的多个控件。 FindControl要求控件具有唯一的ID。 在页面加载时不会发生此错误,但是当我更改具有AutoPostBack =“true
在 page_Init 上,我创建了许多 UpdatePanel,并在这些 UpdatePanel 中创建了一个 Panel 。然后,我使用此面板进一步动态添加其他控件。例如,我在每个面板中添加了一些
我在面板内有一个中继器。 在这个中继器内我有另一个面板。在某些情况下,我想设置这个 panel.visibility = false。 在后面的代码中,我尝试在 OnItemDataBound 上找到
我有一个在页面加载时动态加载的用户控件: protected void Page_Load(object sender, EventArgs e) { MyControl ctl = (MyC
我有多个文本框,我想用相同的方法以编程方式填充它们。 ">
我有一个绑定(bind)到 DropDownList 的 GridView。当 DropDownList 的索引更改时,GridView 由 SQL 查询更新。 GridView 的单元格中的值被转换
两个异常(exception): 索引越界 FindControl 返回 null(假装或未检测到控件) cs 代码:(现在下拉列表只需要在编辑模式下填充) protected void GridVi
我有一个 Literal 控件,我正试图找到它以便我可以在其中插入文本。我有一个包含多个内容占位符的母版页。 Project Navigation 我不断收到“对象引用未设置到对象的
我有两种方法。第一个动态创建一个表,然后将该表添加到 PlaceHolder 中。 private void generateData(){ Table tbl = new Table();
我现在知道通常您可以使用以下方法获取文本输入的值: txtName.Text 但是因为我的输入是在 LoginView 内部,所以我使用 FindControl 是这样的: LoginView1.Fi
我正在尝试根据相关文本框来控制按钮状态。除前缀外,名称相同。文本框和按钮位于页面上的表格中。
我开发了一个网络仪表板,它具有嵌入控件内部的控件结构。在许多情况下,我有一个控件的 ID,需要处理实际的控件对象。因此,我使用了一个实用方法,一个递归的 FindControl 实现,它在 Page(
我是一名优秀的程序员,十分优秀!