我有具有一个背景颜色为默认aspx页。我需要的是选择一个单选按钮的某个选项时,能够以编程方式改变它。我尝试设置表的ID字段,但我似乎无法访问它的隐藏文件我的C#代码。

我原来的表是:

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width:  thin; width:100%; background-color: #99ccff;" cellspacing="4" 
cellpadding="1">

我看不到我的智能感知的ID,虽然。

修改结果 现在,我可以看到在我身后我的代码表,我想真正改变背景颜色。下面是我的单选按钮列表的代码:

<asp:RadioButtonList ID="rdoStatus" runat="server" AutoPostBack="true"
RepeatDirection="Horizontal" Visible="true"   
OnSelectedIndexChanged="rdoStatus_OnSelectionChanged">
<asp:ListItem Value="181001" Text="Open"/>
<asp:ListItem Value="181002" Text="Closed" />
<asp:ListItem Value="181003" Text="Pending" />
</asp:RadioButtonList>

我打我的事件处理程序设置断点,但背景颜色是不会改变的回传。如果选择的产品挂起,那么我想改变背景颜色不同的东西。如果他们改变了单选按钮来打开或关闭,然后我要确保背景色为默认值。

修改2:结果 在我的事件处理程序的代码非常简单:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.BgColor = "#ff9a9a";
}
else
{
  tblSheet.BgColor = "#99ccff";
}
有帮助吗?

解决方案 3

我得到它的工作!结果 我已更改的表为以下(I去除背景色):

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width: thin; width:100%;" cellspacing="4" cellpadding="1">

然后在我后面的代码我在设置的时候它是在Page_Load背景色的不可以回传:

tblSheet.Bgcolor = "#99ccff";

瞧!在RadioButtonList和事件处理程序是相同的问题。回发是改变颜色回原来的。感谢大家的帮助!

其他提示

在表中标记地点runat="server"

一旦你这样做,你就可以通过编程访问表。

要直接改变背景颜色,尝试:

if (rdoStatus.SelectedValue == "181003")
    {
      tblSheet.Style.Add("background-color", "#ff9a9a");
    }
    else
    {
      tblSheet.Style.Add("background-color", "#99ccff");
    }

如果您正在使用样式表就可以了,试试这个:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.CssClass = "default_color"
}
else
{
  tblSheet.CssClass = "other color"
}

您触发回发,这将直接使这种变化从单选按钮?点击 这是此时唯一改变的?

如果回答这两个是“是”,你应该考虑所有在JavaScript这样做,而不是完全和跳过回传:

<input type="radio" value="..." name="..." id="..."
    onclick="document.getElementById('tblSheet').style.backgroundColor = '#99ccff';" />

这里的理由是,相比于保持客户端上的一切回发是令人难以置信的慢,他们也伤害了你的web应用程序一样简单(在服务器上做更多的工作,当然,坏的可扩展性)扩展的能力。因此,这对用户和工作少为您的服务器速度更快。

但是,你必须要小心也没有的失去的移动工作关闭服务器时已禁用JavaScript的用户功能。但是,如果这回发已经由您的单选按钮触发,那么你已经依赖于JavaScript此功能。

首先你看不到表,因为没有RUNAT =“服务器”表中的属性,它允许你看到ID,所有的第二你将不能够改变,即使你看到表中的一个颜色表在你的代码。即使你将访问表的属性和设置颜色有它不会帮你是因为你需要再次回来后看到的变化。

您需要做的是使用更新面板,并使用变量,而不是#FF9900,这样默认的颜色会变成红色或者是任何颜色和复选框的检查活动,你将值更改为绿色或其他颜色

就像乔尔说,JavaScript是一种更好的解决方案,如果你只需要改变颜色,但如果你改变你的表到服务器控制(使用你的表或另一台服务器控制RUNAT =服务器)不要忘记使用在的getElementById嵌入代码块来检索表ID,因为重命名ASP.NET ID的时,它呈现页面。

在Joel的例子将如下所示:

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top