Erstens, ich bin neu bei Ajax und ich verstehe nicht alles, wie es in Asp.Net funktioniert.Asp.Net C# -> Javascript Ajax
Ich benutze Asp.Net 3.5 und ich habe einen C# Server-Code, der ausgeführt wird und wenn es fertig ist, ist es ein abonniertes Ereignis aufzurufen, das das Ergebnis in ein Txtbox-Steuerelement schreibt.
C# -Code:
public partial class TestDBLoader : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
dbManager1.LoadDBCompleted += new DBManager.AsyncLoadDBDelegate(dbManager1_LoadDBCompleted);
dbManager1.LoadDBAsync(sender, e, null);
}
public void dbManager1_LoadDBCompleted(object sender, EventArgs e)
{
txtResult.Text = "Finish!";
updatePanel.Update();
}
}
public partial class DBManager : System.Web.UI.UserControl
{
public AsyncLoadDBDelegate asyncLoadDB;
public delegate void AsyncLoadDBDelegate(object sender, EventArgs e);
public event AsyncLoadDBDelegate LoadDBCompleted;
private void StartLoad(object sender, EventArgs e)
{
// Not the true code, only an example ...
for (int i = 0; i <= 10; i++)
{
Thread.Sleep(1000);
}
LoadDBCompleted(sender, e);
}
public IAsyncResult LoadDBAsync(object sender, EventArgs e, AsyncCallback callback)
{
IAsyncResult asyncResult;
asyncLoadDB = new AsyncLoadDBDelegate(StartLoad);
asyncResult = asyncLoadDB.BeginInvoke(sender, e, callback, null);
return asyncResult;
}
}
Asp Code:
<asp:ScriptManager ID="ScriptManager" runat="server" />
<asp:UpdatePanel ID="updatePanel" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="dbManager1" EventName="LoadDBCompleted" />
</Triggers>
<ContentTemplate>
<uc:DBManager ID="dbManager1" runat="server" />
<asp:TextBox ID="txtResult" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
Was mache ich falsch? Wenn ich in debug gehe, merke ich, dass meine Methode dbManager1_LoadDBCompleted Anruf ist, aber es aktualisiert nicht die Textbox ...
EDIT: Ich aktualisiere den Code, um realistischer und verständlicher zu sein.
EDIT2: Wenn es eine Möglichkeit gibt, dies zu tun, ohne das UpdatePanel zu benutzen, lass es mich bitte wissen wie.
Ich bearbeite meine Nachricht mit Ihrer Empfehlung, aber es funktioniert immer noch nicht – Melursus