【问题标题】:asp.net how to change color of asp:panelasp.net 如何改变 asp:panel 的颜色
【发布时间】:2015-03-11 15:39:09
【问题描述】:

我正在尝试在我的 Web 应用程序中更改 panel 的(背面)颜色以表示模式更改。我正在使用带有 VS Express 2013 for Web 的 asp.net WebForm 项目。我有一个包含多个页面的 Web 应用程序,其中一个页面包含一组三个嵌套面板:

<asp:Panel ID="ManageTemplatesPanel" runat="server" style="border-radius:3px" BorderStyle="Solid" BackColor="White" Height="1415px" Width="930px" ScrollBars="None" BorderWidth="1px">
<asp:Panel ID="BigInsetGrayPanel" runat="server" style="border-radius:3px" BackColor="Silver" BorderStyle="Solid" BorderWidth="1px" Height="1275px" Width="910px" >
<asp:Panel ID="SelectClientsWhiteInsetPanel" runat="server" style="margin-left:20px;margin-right:20px;border-radius:3px" BackColor="White" Height="465px" BorderStyle="None">

每个面板内部都有许多控件 - 文本框、网格视图、按钮等。 然后有一组面板的结束标签。

我有一个CheckBoxList 控件,里面有三个复选框:

<asp:CheckBoxList ID="IncludeCheckBoxList" runat="server" BackColor="White" BorderStyle="None" CssClass="cssIncludeCheckBoxList" Font-Names="Arial" Font-Size="Small" ForeColor="Black" RepeatDirection="Horizontal" RepeatLayout="Flow" Height="28px" AutoPostBack="True" OnSelectedIndexChanged="IncludeCheckBoxList_SelectedIndexChanged">
    <asp:ListItem Selected="True">Sent Client List</asp:ListItem>
    <asp:ListItem Selected="True">Notification Time</asp:ListItem>
    <asp:ListItem Selected="True">Message</asp:ListItem>
</asp:CheckBoxList>

这嵌套在“ManageTemplatesPanel”中。我创建了一个名为IncludeCheckBoxList_SelectedIndexChangedSelectedIndexChanged 事件处理程序。代码如下:

protected void IncludeCheckBoxList_SelectedIndexChanged(object sender, EventArgs e)
{
    ListItemCollection items = IncludeCheckBoxList.Items;
    foreach (ListItem item in items)
    {
        string section = item.Value;
        bool itemChecked = item.Selected;

        if (0 == String.Compare(section, "Sent Client List", true))
            UpdateSentClientSection(itemChecked);
        else if (0 == String.Compare(section, "Notification Time", true))
            UpdateNotificationTimeSection(itemChecked);
        else if (0 == String.Compare(section, "Message", true))
            UpdateMessageSection(itemChecked);
    }
}

这是UpdateSentClientSection的代码:

private void UpdateSentClientSection(bool itemChecked)
{
    if (itemChecked)
        MessageWhiteInsetPanel.BackColor = System.Drawing.Color.White;
    else
        MessageWhiteInsetPanel.BackColor = System.Drawing.Color.Blue;
}

我已经搜索过,一些博客建议以这种方式更改面板的背景颜色 - 但我无法让它工作。任何想法为什么?

提前谢谢...

【问题讨论】:

  • 更新 - 出于某种原因,原始帖子不包含我的面板和 CheckBoxList 定义:
  • 已经完成了;)

标签: c# asp.net panel


【解决方案1】:

由于您试图在事件期间从服务器端修改元素,因此您必须使用 ajax 面板并在方法 UpdateSentClientSection 中调用 ajaxpanel.update()。

见:https://msdn.microsoft.com/en-us/library/bb399001%28v=vs.140%29.aspx

【讨论】:

  • 一个UpdatePanel(据我所知)用于防止页面或页面的一部分由于回发而闪烁。这对我有什么帮助?
  • 这将对您有所帮助,因为您必须再次发布该页面才能使颜色更改出现。由于更新面板只会更新该部分,因此用户可以直接看到它。
猜你喜欢
  • 2015-08-05
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 2022-09-27
  • 2020-05-13
  • 2015-12-08
相关资源
最近更新 更多