This blog has personalition features for you, the reader. Below is a key of what all the icons mean and which aspects of the layout they change.
Close Window
Das Atlas (oder besser ASP.NET Ajax) UpdatePanel bietet die Möglichkeit, auf getriggerte Control-Events zu reagieren und sich entsprechend upzudaten.
1: <asp:Button ID="MyButton" runat="server" Text="Submit" />
2: <atlas:UpdatePanel ID="MyUpdatePanel" runat="server" Mode="Conditional">
3: <ContentTemplate>
4: <asp:Label ID="Message" runat="server"></asp:Label>
5: </ContentTemplate>
6: <Triggers>
7: <atlas:ControlEventTrigger ControlID="MyUsc" EventName="Click" />
8: </Triggers>
9: </atlas:UpdatePanel>
1: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyUserControl.ascx.cs" Inherits="MyUserControl" %>
2: <asp:Button ID="MyButton" runat="server" Text="Click me" OnClick="MyButton_Click" />
1: public partial class MyUserControl : System.Web.UI.UserControl
2: {
3: public event CommandEventHandler Click;
4:
5: protected void Page_Load(object sender, EventArgs e)
6: {
7: Microsoft.Web.UI.ScriptManager scriptManager =
8: Microsoft.Web.UI.ScriptManager.GetCurrent(this.Page);
9: scriptManager.RegisterAsyncPostBackControl(MyButton);
10: }
11:
12: protected void MyButton_Click(object sender, EventArgs e)
13: {
14: if (Click != null)
15: {
16: Click(this, new CommandEventArgs("Click", MyButton));
17: }
18: }
19: }
Wednesday, October 18, 2006 8:28 PM
Vor kurzem stand ich auch vor dieser Aufgabe: Ein Custom-Pager.Ich habe allerdings nicht das Control beim Scriptmanager registriert, sondern einen eigenen Event benutzt.Da ich LinkButton Elemente verwende, kann ich so dynamisch die Controls aufbauen (was ja gerade bei einem Pager wichtig ist), und noch Argumente für das Command Event der Links festlegen.Nun nur noch einen Event für genau dieses Command Event festlegen, in der einbettenden Seite einbauen, und schon kann man spezifisch auf die übergebenen Argumente reagieren.Vorteil des Registrierens im Scriptmanager ist natürlich, dass das Control nicht unbedingt auch asynchron verwendet werden muss.Beim Pager ist das ja aber eh nicht gegeben.
Hi SvenBin mir nicht sicher ob ich dich richtig verstanden habe - jedenfalls beschreibst du doch genau das feuern von Events aus UserControls heraus - also quasi custom UserControl-Events.Da bleibt aber das Problem, wie diese Events getriggert werden können... würde mich interessieren wie du das konkret gemacht hast.GrussDani
Hi Dani,hier der Code des UC:pu blic event CommandEventHandler Browsed; protec ted void OnBrowseCommand(object sender, CommandEventArgs e) { Browsed(this,e); }Hier die Seite, die das Control nutzt:_pager.Browsed += new CommandEventHandler(_pager_Browsed);void _pager_Browsed(object sender, CommandEventArgs e) { _pager.CurrentPage = System.Convert.ToInt32(e.CommandArgument); _currentpage = System.Convert.ToInt32(e.CommandArgument); ViewState["currentpage"] = _currentpage; _pager.DataBind(); }Dadurch, dass der Event public ist, kann dieser genau so als Trigger Event genutzt werden:atlas : ControlEventTrigger ControlID="_pager" EventName="Browsed"Ist nicht unbedingt immer notwendig, dass man da eigene Events nimmt, aber da ich bei dem Pager verschiedene Links (Zurück, Weiter, Seiten als Zahlenreihe) anbiete, kann ich den UpdateEvent des Panels von einem einzigen Event aus kontrollieren.
Mmhh... komisch. Wenn ich Dein Beispiel nachvollziehe, stosse ich genau auf das im Blog-Post beschriebene Problem. By the way ist dein Beispiel ja auch genau das, was ich in meinen Beispiel anspreche, nämlich das Triggern von (eigenen) UserControl-Events...Das einzige was ich mir vorstellen kann, ist wenn bei dir das UserControl selbst innerhalb des Update-Panels liegt. Das das UpdatePanel eh alle Events Postback-Events der darinliegenden Controls triggert, triggert es natürlich auch entsprechende UserControl-Events. Dann ist es auch nicht notwendig, extra ControlEventTriggers dafür zu registrieren.
Fields denoted with a "*" are required.