2017-11-13 12 views
0

UpdatePanelsを追加して、それぞれCheckBox<a>のリンクを追加しようとしています。リンクをクリックすると、対応するCheckBoxがチェックされるようにします。私はHTMLを正しく表示することができますが、UpdatePanel &コントロールをバックエンドと通信させることに問題があります。ASP.NET UpdatePanelとWebコントロールを含むダイナミックHTMLをaspxページに追加します。 Webコントロールの更新他のコントロールOnClick

私はメインのマスターページを持っています。メインのページの中に2番目のマスターページがあります。次に、私のコンテンツページが子のマスターページ内で作業しています。私はEnablePartialRendering="True"のメインマスターページにScriptManagerを持っています。

私はこのエラーを取得する:基本的に私のコントロールは、私はUpdatePanelのを含めるために作成していますこれらのセクションの量が動的である

の背後にあるコードで私の関数を求めるされていないことを意味asp.netのCS1061 をデータベースからの結果の数に依存します。そして、ダイナミックHTMLを挿入し、ループ内の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 

<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:私はJavascriptを

にaspxページを頼ることなく、この利用ASP.NETs機能をやろうとしていますラベル内:

auditsTable.Text = HTML; 

私の最後の質問は...私はリンクのOnClickをしたいと思っていますバックエンドのAuditLinkClickにチェックを入れる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; 
    } 

ありがとうございます!

+0

あなたは、文字列を作成することによって、ページに動的なコントロールを追加しようとしています。それは決してうまくいかないでしょう。 REALコントロールを作成してプレースホルダに追加する必要があります。 – VDWWD

+0

私は理解していると思うし、文字列として追加することなくこれを処理します。私は一度この方法を試みたが、UpdatePanelを追加する方法を混乱させていた。あなたがそれを追加した後、UpdatePanelがいつ終了するのかをどうやって区別するのですか? [ここ] –

+0

はその後、再び、多分私は1つのUpdatePanelで休息し、それにコントロールを追加する必要があります... –

答えて

0

@VDWWDはコメント(感謝!)で正しいです。ダイナミックコントロールをページに文字列として追加できませんでした。私の背後にあるコードで

<asp:UpdatePanel ID="UpdatePanelCheckBoxes" runat="server"> 
    <ContentTemplate> 
     <asp:Panel ID="caPanel" runat="server"></asp:Panel> 
    </ContentTemplate> 
</asp:UpdatePanel> 

が、私は追加してい動的データのすべてを保持するためにPanelとフロントエンドで単一UpdatePanelを入れて:これは私がやったと私はそれを壊した方法ですバックこの早く発見から私を開催私はCを追加するPanelを使用するマスターページを使用して、必要に応じていたという事実だったこと

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

一つのこと:によって彼らの周り<div> Sをそれぞれ制御し、フレームワークを追加しましたontrolsに。エラーが発生しました[HttpException(0x80004005): 'TextBox'のコントロール 'ctl00_TextBox1'はrunat = serverのフォームタグ内に配置する必要があります。Panelを使用するまで。

この答えは助け:Control 'ctl00_TextBox1' of type 'TextBox' must be placed inside a form tag with runat=server

関連する問題