您好我正在尝试在特定div中添加asp:LinkButton。但它不起作用。它只是添加文本但链接没有显示。我不知道我哪里错了。以下是我想要做的事情。
<div class="form-group">
<div id="divTitle" runat="server">
//I am trying to add link button here
</div>
</div>
//服务器端代码在
之下Int32 counter = 1;
divTitle.Controls.Clear();
foreach (DataRow dritem in dt.Rows)
{
divTitle.InnerHtml = "<asp:LinkButton ID='lbl" + counter++ + "' runat='server' CommandArgument='" + dritem["DocumentName"] + "' OnClick='ViewDocument' Visible='true'>" + dritem["UpDocumentName"] + "</asp:LinkButton>";
}
答案 0 :(得分:1)
你可以这样做......
<div class="form-group">
<div id="divTitle" runat="server">
//I am trying to add link button here
</div>
</div>
并在服务器端...
Control divTitleControl = this.Page.FindControl("divTitle");
LinkButton linkButton = new LinkButton();
divTitleControl.Controls.Add(linkButton);
答案 1 :(得分:0)
您分配给divTitle.InnerHtml的字符串只是一个字符串。试试这个: (或者按照评论中的建议将数据绑定到转发器 - 这是我猜的正确方法)
//....
var button = new LinkButton();
button.CommandArgument = dritem["DocumentName"];
button.Click += ViewDocument;
button.Text = dritem["UpDocumentName"];
divTitle.Controls.Add(button);
答案 2 :(得分:0)
问题是你试图通过将其添加为内部html来创建ASP控件,但忽略了.NET服务器如何处理asp页面以及浏览器如何解释给定页面。
将InnerHTML添加到服务器端代码中的div时,.NET服务器将其作为不需要解析的html代码。但ASP控件必须解析为实际的HTML标记,以便您的浏览器可以识别它们。
由于未对其进行解析,因此您的浏览器会获得一个标记为<asp:Link...
的标记,并且在有效的html中没有此标记。
所以你要做的就是添加有效的html作为innerHTML,比如
divTitle.InnerHtml = "<a ID='lbl" + counter++ + ...
或将ASP控件添加为创建的控件。由于您希望将该控件连接到click事件处理程序,因此您确实需要执行第二个选项
var MyLinkButton = new LinkButton();
MyLinkButton.ID = "lbl" + counter++;
MyLinkButton.Text = dritem["UpDocumentName"];
MyLinkButton.CommandArgument = dritem["DocumentName"];
MyLinkButton.Click += ViewDocument;
divTitle.Controls.Add(MyLinkButton);