Ich habe diese AJAX-Taste, die ich einige CSS aktualisieren möchte. Das Problem besteht darin, dass die Steuerelemente, die ich aktualisieren möchte, sich in einer anderen Datei befinden und nicht aus dieser Datei entfernt werden können.CSS von Controls in verschiedenen Dateien über CodeBehind aktualisieren
Dies ist das Panel, dessen CSS ich aktualisieren möchten, die in der Site.Master Datei befindet:
<asp:ScriptManager ID="ScriptManager" runat="server" />
<asp:UpdatePanel ID="Panel2" runat="server" updatemode="Always">
<ContentTemplate>
<div id="updateThis" runat="server"><p>Test text</p></div>
</ContentTemplate>
</asp:UpdatePanel>
Dies ist die Schaltfläche in der Datei Items.ascx befindet:
<asp:UpdateProgress runat="server" ID="PageUpdateProgress">
<ProgressTemplate>
<img class="ajax-loader" src="/Images/ajax-loader.gif" alt="Loading..." />
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="Panel3" runat="server" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateButton" eventname="Click" />
</Triggers>
<ContentTemplate>
<asp:Button runat="server" OnClick="UpdateButton"
OnClientClick="hideButton()" Text="Update"
class="update" ID="UpdateButton" name="UpdateButton"
type="submit" ></asp:Button>
</ContentTemplate>
</asp:UpdatePanel>
Dies ist die Methode, die Items.ascx.cs Updatebutton
protected void UpdateButton(object sender, EventArgs e)
{
var masterPage = this.Page.Master;
var updatePanel = masterPage.FindControl("Panel2");
var div = (HtmlGenericControl)updatePanel.Controls[0].FindControl("updateThis");
div.Style.Add("color", "#ff0000");
}
Wenn ich auf die Schaltfläche es nicht tut, ist am Ende funktioniert richtig. Von jetzt an, mit der AJAX UpdateProgress Vorlage, zeigt es das Laden von GIF und dann das GIF verschwindet und der Text ändert sich nie die Farbe.
EDIT
Hoffentlich wird dies eine bessere Vorstellung davon, wo die Dinge könnte schief gehen:
Das funktioniert
protected void UpdateButton(object sender, EventArgs e)
{
var masterPage = this.Page.Master;
var updatePanel = masterPage.FindControl("Panel2");
var div = (HtmlGenericControl)updatePanel.FindControl("updateThis");
div.Style.Add("color", "#ff0000");
UpdateButton.Text = "Done!";
}
ich in der Findcontrol() -Methode hatte #updateThis. Sei nicht wie ich!
Hmmm das scheint nicht für mich zu arbeiten. Sie sagten, dass das Entfernen der Steuerelemente [0] aus dem Ereignishandler in Ihrem Test funktioniert hat? Ich frage mich, warum mir vielleicht etwas zustößt? – FranticJ3
Nur neugierig: stürzt Ihr Originalcode ab? Es sollte, da 'updateThis' nicht ohne das Attribut 'runat =" server "' gefunden werden kann. Wie für 'Controls [0]', funktioniert es, wenn Sie es behalten? Es funktioniert für mich damit oder ohne es. – ConnorsFan
Meine Seite stürzt beim Klicken auf die Schaltfläche nicht ab. Das AJAX Loader GIF erscheint für einen kurzen Moment und verschwindet dann, als würde es funktionieren, aber Style.Add(); Linie scheint nicht wirklich zu funktionieren. Ich habe das Style.Add() auskommentiert; Zeile und hinzugefügt in UpdateButton.Text = "Fertig!"; und es ändert den Text der Schaltfläche, sobald das AJAX Loader GIF verschwindet. Ich werde den ursprünglichen Beitrag mit weiteren Informationen aktualisieren. – FranticJ3