从aspx vb.net中的codebehind中查找innerhtml创建的div控件

时间:2017-03-06 10:08:38

标签: asp.net

我在后面的代码中创建了标记的字符串值,并在Page_Load方法中最后通过innerhtml将其插入到div中。 我想将<asp:ImageButton>放到由innerhtml创建的div中。我可以设置onClick方法,选择按钮等图片

markUp += "<td><div runat='server' id='deleteDiv" & row("id") & "'></div>"
result.InnerHtml = markUp (result - DIV element on markup page)

我放了之后:

Dim deleteDiv = Me.FindControl("deleteDiv" & row("id"))
                Dim deleteBtn = New ImageButton()
                deleteBtn.ID = "deleteBtn" & row("id")
                deleteDiv.Controls.Add(deleteBtn)

如果我在标记页面中创建div它可以工作,但这种方式找不到,因为它没有完全加载并且出错

  

&#34;类型&#39; System.NullReferenceException&#39;发生在   display.dll但未在用户代码中处理&#34;在行上   &#34; deleteDiv.Controls.Add(deleteBtn)&#34;

如何在加载页面后将其编程为findcontrol?在它之后转到Master_Page_Load方法。

1 个答案:

答案 0 :(得分:0)

我使用Literal添加文本类型的控件,并将其与添加ImageButton控件结合起来。

result.Controls.Add(New LiteralControl("<table class='adminTable'><tr><th width=30px>#</th><th>Name</th><th>File type</th><th>Current</th><th>Delete</th></tr>"))
Dim deleteBtn = New ImageButton()
deleteBtn.Attributes.Add("id", "deleteBtn" & rowid)
deleteBtn.ImageUrl = "img/delete.png"
deleteBtn.Attributes.Add("runat", "server")
deleteBtn.Attributes.Add("OnClick", "'deleteBtn_Click'")
result.Controls.Add(deleteBtn)
result.Controls.Add(New LiteralControl("</div></td></tr>"))

但现在又出现了另一个问题。从后面的代码中使用aspx页面调用方法创建ImageButton:

<asp:ImageButton id='changeMode' runat='server' OnClick='changeModeBtn_Click' />

但是当我从codebehind插入按钮时,它不会调用方法。 Chrome的开发工具有所不同 首先变得像:

<input type="image" name="ctl00$MainContent$changeMode" id="ctl00_MainContent_changeMode" src="img/switch-on-right1.png" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$MainContent$changeMode&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" style="border-width:0px;" />

第二个(在代码中创建):

<input type="image" name="ctl00$MainContent$ctl00" id="deleteBtn1" runat="server" src="img/delete.png" onclick="deleteBtn_Click;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$MainContent$ctl00&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" style="border-width:0px;" />

问题:出了什么问题?