【发布时间】:2015-12-14 13:09:29
【问题描述】:
我需要使用 LiteralControl 将 ASP:LinkButton 动态添加到网页。首先我为控件生成一个唯一的ID,然后添加如下:
string criteriaDeleteButtonID = "lnkDelete_" + dsCriteria.Tables[0].Rows[intCriteria]["CriteriaID"].ToString();
pnlContent.Controls.Add(new LiteralControl("<asp:LinkButton id=\"" + criteriaDeleteButtonID + "\" OnClick=\"LinkButton_Click\" runat=\"server\" class=\"btn btn-danger\"><i class=\"glyphicon glyphicon-trash\"></i> </asp:LinkButton> </div>"));
在我后面的代码中,我有以下内容
public void LinkButton_Click(object sender, EventArgs e)
{
LinkButton tmpLinkButton = (LinkButton)sender;
string[] idvars = tmpLinkButton.ID.Split('_');
int criteriaID = Convert.ToInt32(idvars[1].ToString());
clsDataAccess tmpClsData = new clsDataAccess();
bool result = tmpClsData.DeleteCriteria(criteriaID);
buildForm();
}
无论我做什么,我似乎都无法让背后的代码着火。如果我手动将 same HTML 添加到表单后面的代码会触发,但如果我使用 LiteralControl 动态添加相同的代码,则不会触发事件。
我在 Page_Load 中动态生成表单。我在 Page_Int 中尝试过,但没有运气。浏览器控制台报告以下内容: Uncaught ReferenceError: LinkButton_Click is not defined。有什么想法吗?
【问题讨论】:
-
服务器端控件作为文本控件没有任何意义。你真正的需求是什么?向页面动态添加链接按钮?
-
感谢 Diginari 和 Andrei。是的,真正的要求是向页面动态添加链接按钮。该页面非常复杂,我正在使用字符串构建器构建 html,并在最后通过文字将字符串构建器写入页面。我希望不必向页面添加普通控件,因为我将无法使用字符串生成器。我可能对这个不走运......
-
@Rusty007,是的,你不走运。对于服务器端控件,它们需要通过普通的 Controls.Add 方法添加到控件树中。如果您将 Literal 与一些文本一起使用,那么您真正需要的控件只是 ASP.NET 中的一段文本,严格来说并不存在。
标签: javascript c# asp.net