簡體   English   中英

ASP.NET將帶有UpdatePanel和Web控件的動態HTML添加到aspx頁面。 Web控件更新其他控件OnClick

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM