我在后面的代码中创建了标记的字符串值,并在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
方法。
答案 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("ctl00$MainContent$changeMode", "", true, "", "", 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("ctl00$MainContent$ctl00", "", true, "", "", false, false))" style="border-width:0px;" />
问题:出了什么问题?