Inhalt in Updatepanels aktualisieren

31/08/2009 - 18:29 von martina gerling | Report spam
Hallo,

Ich habe in einem UpdatePanel ein Panel integriert, welchem ich durch
Änderungen am Style ein neues Aussehen geben will. Dazu habe ich eine
Checkbox und eine DropDownList. Die Methoden "CheckedChanged" von der
Checkbox und "SelectedIndexChanged" der DropDownList habe ich im
Trigger des Updatepanels verbunden.

Wenn ich nach dem Starten der Seite die Checkbox oder die DropDownList
betàtige, dann funktioniert auch alles.

Mein Problem ist nur, dass nach dem ersten Anzeigen der Seite der neue
Style der Seite nicht angezeigt wird. Beim Debuggen wird jedoch der
neue Style zugewiesen.

Wo liegt das Problem bei mir? Ich habe mal den Quelltext und einen
Ausschnitt aus der aspx-Datei unten angefügt.
Was übersehe ich hier, dass mir das Panel mit dem Style der ersten
Auswahl nicht angezeigt wird?

default.aspx:
...
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<div id="Container">
<asp:UpdatePanel ID="UpdatePanel1" runat="server"
UpdateMode="Conditional">
<ContentTemplate>
<div id="ToolBox">
<asp:CheckBox ID="CheckBox1" runat="server"
AutoPostBack="True"

oncheckedchanged="CheckBox1_CheckedChanged" />
&nbsp;&nbsp;&nbsp;
<asp:DropDownList ID="DropDownList1"
runat="server" AutoPostBack="True"

onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
</div>
<asp:Panel ID="Monitor" runat="server">
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="CheckBox1"
EventName="CheckedChanged" />
<asp:AsyncPostBackTrigger
ControlID="DropDownList1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
</form>
...


default.cs
...
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
setDDLMonitor();
}
}

protected void CheckBox1_CheckedChanged(object sender, EventArgs
e)
{
setDDLMonitor();
}

protected void DropDownList1_SelectedIndexChanged(object sender,
EventArgs e)
{
setDisplaySize();
}

private void setDDLMonitor()
{
DropDownList1.Items.Clear();
if (CheckBox1.Checked)
{
DropDownList1.Items.Add("4 : 3");
DropDownList1.Items.Add("11 : 9");
DropDownList1.Items.Add("16 : 9");
}
else
{
DropDownList1.Items.Add("800 x 600");
DropDownList1.Items.Add("1024 x 768");
DropDownList1.Items.Add("1440 x 900");
DropDownList1.Items.Add("1440 x 1080");
}
DropDownList1.SelectedIndex = 0;
setDisplaySize();
}

private void setDisplaySize()
{
if (DropDownList1.SelectedValue == "4 : 3")
{
Monitor.Style["width"] = "400px";
Monitor.Style["height"] = "300px";
Monitor.Style["background-color"] = "Black";
}
else if (DropDownList1.SelectedValue == "800 x 600")
{
Monitor.Style["width"] = "800";
Monitor.Style["height"] = "600";
Monitor.Style["background-color"] = "Black";
}
else if (DropDownList1.SelectedValue == "1024 x 768")
{
Monitor.Style["width"] = "1024";
Monitor.Style["height"] = "768";
Monitor.Style["background-color"] = "Black";
}
}
...

Gruss

Martina
 

Lesen sie die antworten

#1 Cristian Mudure
31/08/2009 - 19:38 | Warnen spam
Farbe des Panels ist zwar gesetzt aber die Dimensionen sind 0,0 weil du die
Masseinheit nicht angegeben hast.

Statt
Monitor.Style["width"] = "800";
Monitor.Style["height"] = "600";


Monitor.Style["width"] = "800px";
Monitor.Style["height"] = "600px";

beim anderen das Gleiche

Viele Grüße
Cristian Mudure



"martina gerling" wrote:

Hallo,

Ich habe in einem UpdatePanel ein Panel integriert, welchem ich durch
Änderungen am Style ein neues Aussehen geben will. Dazu habe ich eine
Checkbox und eine DropDownList. Die Methoden "CheckedChanged" von der
Checkbox und "SelectedIndexChanged" der DropDownList habe ich im
Trigger des Updatepanels verbunden.

Wenn ich nach dem Starten der Seite die Checkbox oder die DropDownList
betàtige, dann funktioniert auch alles.

Mein Problem ist nur, dass nach dem ersten Anzeigen der Seite der neue
Style der Seite nicht angezeigt wird. Beim Debuggen wird jedoch der
neue Style zugewiesen.

Wo liegt das Problem bei mir? Ich habe mal den Quelltext und einen
Ausschnitt aus der aspx-Datei unten angefügt.
Was übersehe ich hier, dass mir das Panel mit dem Style der ersten
Auswahl nicht angezeigt wird?

default.aspx:

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<div id="Container">
<asp:UpdatePanel ID="UpdatePanel1" runat="server"
UpdateMode="Conditional">
<ContentTemplate>
<div id="ToolBox">
<asp:CheckBox ID="CheckBox1" runat="server"
AutoPostBack="True"

oncheckedchanged="CheckBox1_CheckedChanged" />

<asp:DropDownList ID="DropDownList1"
runat="server" AutoPostBack="True"

onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
</div>
<asp:Panel ID="Monitor" runat="server">
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="CheckBox1"
EventName="CheckedChanged" />
<asp:AsyncPostBackTrigger
ControlID="DropDownList1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
</form>



default.cs

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
setDDLMonitor();
}
}

protected void CheckBox1_CheckedChanged(object sender, EventArgs
e)
{
setDDLMonitor();
}

protected void DropDownList1_SelectedIndexChanged(object sender,
EventArgs e)
{
setDisplaySize();
}

private void setDDLMonitor()
{
DropDownList1.Items.Clear();
if (CheckBox1.Checked)
{
DropDownList1.Items.Add("4 : 3");
DropDownList1.Items.Add("11 : 9");
DropDownList1.Items.Add("16 : 9");
}
else
{
DropDownList1.Items.Add("800 x 600");
DropDownList1.Items.Add("1024 x 768");
DropDownList1.Items.Add("1440 x 900");
DropDownList1.Items.Add("1440 x 1080");
}
DropDownList1.SelectedIndex = 0;
setDisplaySize();
}

private void setDisplaySize()
{
if (DropDownList1.SelectedValue == "4 : 3")
{
Monitor.Style["width"] = "400px";
Monitor.Style["height"] = "300px";
Monitor.Style["background-color"] = "Black";
}
else if (DropDownList1.SelectedValue == "800 x 600")
{
Monitor.Style["width"] = "800";
Monitor.Style["height"] = "600";
Monitor.Style["background-color"] = "Black";
}
else if (DropDownList1.SelectedValue == "1024 x 768")
{
Monitor.Style["width"] = "1024";
Monitor.Style["height"] = "768";
Monitor.Style["background-color"] = "Black";
}
}


Gruss

Martina

Ähnliche fragen