Sie können, natürlich, aber es gibt zwei Probleme mit diesem Ansatz:
die Steuer Benutzer wird über den Fenstermanager und Fenster auf der Masterseite muss wissen, durchqueren die Kontrollen Hierarchie und finden Sie sie
Wenn Sie das gesamte Snippet zum Benutzer Steuerelement hinzufügen, werden Sie am Ende mit mehreren Fenster-Manager-Instanz und das kann ein paar Tricks auf Sie spielen (siehe here).
Also, denken Sie über die folgenden Ideen:
eine RadWindow Instanz mit dem Steuer Benutzer hinzufügen (kein RadWindowManager) und das allein verwenden. Lesen Sie this article, um ein Skript vom Server zu registrieren, um es zu öffnen, und this article, um die JS-Funktionen zu machen, die Sie möglicherweise für jedes Benutzersteuerelement benötigen.
Öffnen Sie das RadWindow rein von der Client-Seite wie gezeigt here. Sie können register a JS function from the server, die die Parameter übergeben Sie benötigen (URL, Modalität, was auch immer)
Hier eine Beispielimplementierung einer der Ideen ist (dass ich mit gehen), basierend auf Ihren Kommentar:
Master-Seite
<telerik:RadWindowManager ID="RadWindowManager1" runat="server"></telerik:RadWindowManager>
<script>
function openDialog(url, modal, width, height) {
if (radopen) { //if not, there is no RadWindowManager on the page, add an else{} block to use window.open() or other logic
var wnd = radopen(url, null);
wnd.set_destroyOnClose(true);
//add checks here in case parameters have not been passed
wnd.setSize(width, height);
wnd.center();
wnd.set_modal(modal);
}
}
</script>
Benutzerverwaltung Markup
<asp:Button ID="Button1" Text="open RW" OnClick="Button1_Click" runat="server" />
Verwenden Steuercode-behind
protected void Button1_Click(object sender, EventArgs e)
{
bool flag = true;
if(flag)
{
string script = string.Format("function f(){{openDialog('{0}', {1}, {2}, {3});Sys.Application.remove_load(f);}}Sys.Application.add_load(f);",
"the-page.aspx",
"true",
600,
400);
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "someKey", script, true);
}
}
Ja. Du hast recht. Ich habe UserControls und Masterseiten. Ich muss RadWindow nur von der Serverseite anzeigen. Beim Klicken auf die Schaltfläche "Speichern" werden einige Berechnungen durchgeführt und wenn die Speicherbedingungen nicht erfüllt werden, muss das Telerik RadWindow dynamisch angezeigt werden. Ich stimme dir zu. Könnten Sie mir bitte eine einfachere Lösung anbieten? –
Ich habe ein Beispiel für eine wiederverwendbare Implementierung hinzugefügt, die ich in einem solchen Fall gemacht hätte. Natürlich, Refaktor und zwicken ein bisschen, es ist nur ein Beispiel – rdmptn
Großartig. Aber warum sollte ich die Masterseite berühren? Kann es in der aspx-Seite getan werden, die das Benutzersteuerelement hostet? Ich warte gespannt auf Ihre Antwort. –