[英]ASP.NET Add Dynamic HTML w/ UpdatePanel & Web Controls to aspx page. Web Control update other control OnClick
我試圖添加一系列的UpdatePanels
,每個中都帶有一個CheckBox
和<a>
鏈接。 當我單擊鏈接時,我也希望它旁邊的對應CheckBox
也被選中。 我可以使HTML正確顯示,但是在使UpdatePanel
和控件與后端通信時遇到問題。
我有一個主母版頁,在主母版頁內有一個第二母版頁,然后我在子母版頁內使用的內容頁。 我的主頁主頁上有一個ScriptManager,其中包含EnablePartialRendering="True"
。
我收到此錯誤: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;
我的最后一個問題是...我想使后端的AuditOnClick鏈接的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;
}
謝謝您的幫助!
@VDWWD在評論中是正確的(謝謝!)。 我無法將動態控件作為字符串添加到頁面。 這是我所做的以及如何分解的:
將一個UpdatePanel
放在帶有Panel
的前端,以容納我要添加的所有動態數據:
<asp:UpdatePanel ID="UpdatePanelCheckBoxes" runat="server">
<ContentTemplate>
<asp:Panel ID="caPanel" runat="server"></asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
在后面的代碼中,我通過以下方式添加了每個控件和圍繞它們的框架<div>
:
caPanel.Controls.Add(new LiteralControl("<div class='col-md-6'>"));
CheckBox aCheckBox = new CheckBox();
aCheckBox.ID = dt.Rows[i]["ID"].ToString();
caPanel.Controls.Add(aCheckBox);
Button checkboxButton = new Button();
checkboxButton.ID = "Button"+dt.Rows[i]["ID"].ToString();
checkboxButton.Text = dt.Rows[i]["NAME"].ToString();
checkboxButton.CssClass = "caButton";
checkboxButton.Click += new EventHandler(ALinkClick);
caPanel.Controls.Add(checkboxButton);
caPanel.Controls.Add(new LiteralControl("</div>"));
令我無法盡快發現這一點的一件事是,我使用的是母版頁,需要使用Panel
將控件添加到其中。 我收到錯誤[HttpException(0x80004005):類型為'TextBox'的控件'ctl00_TextBox1'必須放置在帶有runat = server的表單標記中。]直到我使用Panel
為止。
此答案有所幫助: 類型為'TextBox'的控件'ctl00_TextBox1'必須置於帶有runat = server的表單標記中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.