【问题标题】:Conditionally change Repeater DropDownList background color?有条件地更改Repeater DropDownList背景颜色?
【发布时间】:2017-08-11 23:21:09
【问题描述】:

当 RadioButtonList selectedItem 为 New 时,我们正在尝试将 Repeater DropDownList 的背景颜色更改为灰色。

否则,将背景保持为白色。

无论 RadioButtonList selectedItem 是 New 还是 Used,以下代码都将背景保持为灰色。

我错过了什么?

//css

<style>
    .disabledcss
    {
        background-color: #F9F9F9;
        color: blue;
        border: 1px solid gray;
        color: Gray;
    }
</style>
<style>
    .enabledcss
    {
        background-color: #fff;
        color: blue;
        border: 1px solid white;
        color: Gray;
    }
</style>

//标记:

<tr>
<td>
Item Type:<asp:RadioButtonList ID="rblPType" runat="server" ValidationGroup ="stype" RepeatDirection="Horizontal" TextAlign="Right" style="display:inline;"  AutoPostBack="true" OnSelectedIndexChanged="rblPurchaseType_SelectedIndexChanged">
<asp:ListItem Text="New" />
<asp:ListItem Text="Used" />
</asp:RadioButtonList><br />
<asp:RequiredFieldValidator style="color:#ff0000;" id="RequiredFieldValidator1"  ControlToValidate="rblPurchaseType" ErrorMessage="Please choose New or Used"  ValidationGroup ="stype" runat="server" />
</td>
<td></td>
</tr>
<tr>
<td colspan="2">
<asp:Panel ID="uPanel" runat="server" Enabled="false">
STATE: <asp:DropDownList ID="ddlState" cssClass="disabledcss enabledcss" runat="server" AppendDataBoundItems="True">
  <asp:ListItem Value="" Selected="True"></asp:ListItem>
  </asp:DropDownList>    
 </div></span></asp:Panel>
</td>
</tr>

ItemDataBound 事件中的 C#

RadioButtonList rbPurchase = e.Item.FindControl("rblPType") as RadioButtonList;

foreach (RepeaterItem ReapterItem in Repeater2.Items)
{
    var rblType = (DropDownList)e.Item.FindControl("ddlState");
    if (rblType.Enabled == false)
    {
        rblType.CssClass = "disabledcss";
    }
    else
    {
        rblType.CssClass = "enabledcss";
    }
}

注意:我在这个论坛上看到了三个不适用于我自己的例子。 谢谢

【问题讨论】:

  • 在你的浏览器 html 上,你的课要来了吗?
  • 你为什么同时使用cssClass="disabledcss enabledcss"?您也可以发送完整的 HTML 标记吗?
  • @SamanGholami,我最初使用 disabledcss 类,结果只是灰色背景。添加 enabledcss 类没有任何区别。我还是把它贴在这里,以防万一我遗漏了一些东西。完整的 CSS 长度为 1500 行。我贴了相关代码。
  • 发布 ASP 控件的代码,而不是 CSS
  • 我做到了。我发布了asp 控件(RadioButtonList 和DropDownList)控件。两者都在中继器内。我还在 ItemDataBound 事件中发布了我正在使用的 C#。

标签: c# css asp.net


【解决方案1】:

您正在使用这两个 css 类来设置下拉列表的样式。

cssClass="disabledcss enabledcss"

您需要阐明其中一个或另一个的使用 - 这可以与 JQuery 一起使用 - 从下拉列表中添加和删除类。或者试试这样的:

if (rblType.Enabled == false)
{
    // rblType.CssClass = "disabledcss";
    rblType.CssClass = rblType.CssClass.Replace("enabledcss", "disabledcss");
}
else
{
    // rblType.CssClass = "enabledcss";
    rblType.CssClass = rblType.CssClass.Replace("disabledcss", "enabledcss");
} 

你的下拉列表中只有一个 CSS 类。

<asp:DropDownList ID="ddlState" cssClass="disabledcss" runat="server" AppendDataBoundItems="True">

【讨论】:

  • 是的,我完全同意这可以在 JQuery 中完成。这也是我的偏好,但是对于 RadioButtonList 和 DropDownList,Repeater 控件过于挑剔。谢谢你的帮助。实际上,它会导致错误。
  • 是的,唯一的变化是根据您的指令删除 enabledcss。这就是为什么我没有走 JQuery 路线的原因。出于某种原因,可能是由于我对 Repeater 的了解很少,JQuery 难以阅读 RadioButtonList 和 DropDownList 控件所在的 Repeater 控件。
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多