【发布时间】:2018-04-26 17:35:44
【问题描述】:
我正在尝试添加一系列UpdatePanels,每个都有CheckBox 和<a> 链接。当我单击链接时,我希望它旁边的对应 CheckBox 也被选中。我可以让 HTML 正确显示,但在获取 UpdatePanel 和控件与后端通信时遇到问题。
我有一个主母版页,主页内有第二个母版页,然后是我在子母版页内使用的内容页。我的主页上有一个带有EnablePartialRendering="True" 的ScriptManager。
我收到此错误:asp.net CS1061 这基本上意味着我的控件没有在后面的代码中找到我的函数
我为包含 UpdatePanel 而创建的这些部分的数量是动态的,并且取决于来自数据库的结果数量。我正在尝试使用 ASP.NETs 功能而不使用 Javascript 来做到这一点
aspx 页面:
<asp:Content ID="aBody" ContentPlaceHolderID="aContent" runat="server">
<div id="caJumbotron" class="jumbotron aJumbotron" runat="server" >
<asp:Label ID="auditsTable" runat="server" Text="" />
</div>
</asp:Content>
aspx.cs:循环内的 HTML 代码
HTML += "<div class='row caSectionRow'>" +
"<div class='col-md-6'>" +
"<asp:UpdatePanel runat='server'>" +
"<ContentTemplate>" +
"<input type='checkbox' class='caCheckbox' name='" + dt.Rows[i]["NAME"].ToString() + "' id='" + dt.Rows[i]["ID"].ToString() + "' value='" + dt.Rows[i]["ID"].ToString() + "' > " +
"<a href='' class='caLink' OnClick ='AuditLinkClick' runat='server' >" + dt.Rows[i]["NAME"].ToString() + "</a>" +
"</ContentTemplate>" +
"</asp:UpdatePanel>" +
"</div>"; //Insert column data
然后在标签内插入动态HTML:
auditsTable.Text = HTML;
我的最后一个问题是......我想让后端的 AuditLinkClick 链接的 OnClick 事件更新 CheckBox 以选中。但是该复选框将具有动态 ID,并且该功能的发送者将是链接。我如何检查与单击的链接相同的 UpdatePanel 中的 CheckBox?
private void AuditLinkClick(object sender, EventArgs e)
{
Response.Write("HERE<br/>");
//Link is what sent us here
CheckBox btn = (CheckBox)sender;
string id = btn.ID;
btn.Checked = true;
}
感谢您的帮助!
【问题讨论】:
-
您正试图通过创建字符串来向页面添加动态控件。那永远行不通。您需要创建 REAL 控件并将它们添加到占位符。
-
好的。我想我理解并将在不将它们添加为字符串的情况下解决此问题。我曾经尝试过这种方式,但对如何添加 UpdatePanel 感到困惑。因为你加了之后怎么区分UpdatePanel什么时候结束呢?
-
再一次,也许我应该使用一个 UpdatePanel 并将控件添加到它...
标签: c# asp.net dynamic updatepanel master-pages