在c#中添加服务器端的链接按钮

时间:2017-09-25 14:41:17

标签: c# asp.net

您好我正在尝试在特定div中添加asp:LinkBut​​ton。但它不起作用。它只是添加文本但链接没有显示。我不知道我哪里错了。以下是我想要做的事情。

<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>";
}

3 个答案:

答案 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);