Dynamisch Benutzersteuerelement hinzufügen, die in der Seite AUF die Schaltfläche klicken Sie auf die NIC ist auch im Benutzer-control (ModalPopExtender im Benutzer-control)
Habe ich eine einfache Benutzer-Steuerelement, das will ich dynamisch erstellen jedes mal, wenn Benutzer klicken Sie auf die Schaltfläche (button speichert die Daten in der db.) Dies ist nur eine Art forum, wo user Antworten und es erscheint unterhalb der Nachricht.
Wenn Benutzer klicken Sie auf die Schaltfläche Antworten ein ModalPopupExtender-Fenster und Benutzer-geben Sie Ihre Antwort und senden.
Wenn ich auf submit klicken Sie im popup-Daten erhalten, gespeichert in der db, aber OnInit ausführen, bevor ButtonClick, so erstellen Sie ein neues Steuerelement, und fügen Sie Steuerelemente, die in diesem Szenario.
Control Code ASPX
<div style="border: .25em solid #000; margin: 10px; padding: 10px">
<div>
<asp:Label ID="lblMessage" runat="server" Width="200px"></asp:Label>
</div>
<div>
<asp:Button ID="btnReply" runat="server" Text="Reply" />
</div>
</div>
<table>
<tr>
<td>
<asp:ModalPopupExtender ID="mpeReply" runat="server" TargetControlID="btnReply" PopupControlID="pnlReply"
BackgroundCssClass="ModalPopupBG1">
</asp:ModalPopupExtender>
<asp:Panel ID="pnlReply" runat="server">
<div class="popupbody">
<table width="90%">
<tr>
<td>
<asp:TextBox ID="txtReply" runat="server" Width="400px" CssClass="input1" TextMode="MultiLine"
ValidationGroup="ReplyPopup"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnSubmit" runat="server" Text="Submit" ValidationGroup="ReplyPopup"
OnClick="btnSubmit_Click" />
<asp:Button ID="btnClose" runat="server" Text="Cancel" CausesValidation="false" />
</td>
</tr>
</table>
</div>
</asp:Panel>
</td>
</tr>
</table>
Kontrolle durch die Nutzer .cs (klicken Sie auf die Schaltfläche speichern Sie einfach die Nachricht in die db)
protected void btnSubmit_Click(object sender, EventArgs e)
{
message.Save();
}
Seite .cs
protected void Page_Init(object sender, EventArgs e)
{
LoadControl();
}
protected void Page_Load(object sender, EventArgs e)
{
}
private void LoadControl()
{
divMessageControl.Controls.Clear();
MessageCollection msgs = MessageCollection.LoadAll();
foreach (Message msg in msgs)
{
AddControlInPlaceHolder(msg);
}
}
private void AddControlInPlaceHolder(Message msg)
{
Control myUserControl = (Control)Page.LoadControl("~/Controls/MessageControl.ascx");
Label lblMessage = myUserControl.FindControl("lblMessage") as Label;
if (lblMessage != null)
{
lblMessage.Text = msg.MsgTxt;
}
divMessageControl.Controls.Add(myUserControl);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie arbeiten mit dynamisch hinzugefügten Steuerelemente, die Sie brauchen, um neu zu erstellen, in der Page_Init-handler alle zuvor hinzugefügten Steuerelemente. Aber für neue Steuern, dass es okay ist, fügen Sie es einfach in die postback-control-Ereignis-handler. Versuchen Sie zu rufen
AddControlInPlaceHolder
Methode rechts inbtnSubmit
click-handler. Wenn Sie brauchen, um Datenbank-message-id int diese Methode, sollten Sie update-message-id in der Save-Methode mit dem neuen Wert.Wir müssen wieder die Steuerelemente auf page_load.
Komplettes Beispiel: