是否可以以编程方式隐藏单选按钮列表的特定列表项?

Posted

技术标签:

【中文标题】是否可以以编程方式隐藏单选按钮列表的特定列表项?【英文标题】:Is it possible to hide a particular list item of radiobuttonlist programmatically? 【发布时间】:2013-03-25 09:21:21 【问题描述】:

我在我的 aspx 页面中使用了 gridview。我有一个列表,其中一个单元格中有六个单选按钮,水平对齐。

我需要隐藏第一个单选按钮。如何以编程方式实现这一目标?

<asp:GridView ID="CrowdRatingGrid" runat="server" AutoGenerateColumns="false" AllowPaging="true" PageSize="4" OnPageIndexChanging="CrowdRatingGrid_PageIndexChanging" ViewStateMode="Enabled">

<PagerSettings Mode="Numeric" PageButtonCount="4" />
<Columns>
<asp:TemplateField>
   <HeaderTemplate>
    Rating
    </HeaderTemplate>
    <ItemTemplate>
     <asp:RadioButtonList runat="server" ID="Rating" SelectedValue='<%# Bind("rating_id") %>'
                            RepeatDirection="Horizontal">
                            <asp:ListItem Value="0" />
                            <asp:ListItem Value="1" />
                            <asp:ListItem Value="2" />
                            <asp:ListItem Value="3" />
                            <asp:ListItem Value="4" />
                            <asp:ListItem Value="5" />
                        </asp:RadioButtonList>
                    </ItemTemplate>
                </asp:TemplateField>
         </Columns>
        </asp:GridView>

我需要隐藏 value=0 的列表项。我将如何实现这一目标?

【问题讨论】:

如果您需要针对特定​​项目使用不同的逻辑,请不要使用RadioButtonList,而是使用单个RadioButtons。您可以使用 Panel 之类的容器控件和适当的 CSS 进行布局。当可用选项列表中只能选择一个时,请使用 GroupName 【参考方案1】:

是的,您可以通过将其Enabled 属性设置为false 来隐藏它:

Rating.Items[0].Enabled = false;

根据 OP 的评论进行编辑。要完全摆脱它,您需要这样做:

Rating.Items.RemoveAt(0);

然后当你想要它回来时,你需要这样做:

Rating.Items.Insert(0, "0");

【讨论】:

我需要隐藏它...您的代码只是禁用了单选按钮【参考方案2】:

编辑:好的,我对此进行了更深入的研究,看看当您将 RadioButtonList 控件设置为“水平”时 .NET 如何呈现它(这是一个每个项目都有&lt;td&gt; 的表格)。

试试这个:

var bli = Rating.Items[ 0 ];
bli.Attributes.Add( "hidden", "hidden" );

【讨论】:

我需要隐藏它...您的代码只是禁用了单选按钮 您能解释一下隐藏和禁用单选按钮之间的区别吗? 隐藏意味着单选按钮将在屏幕上不可见...禁用意味着它将可见但无法检查 @Xavier - 明白,我想确定我看到的和 Coder 看到的一样。有时隐藏并不总是隐藏在 asp.net 世界中......在意识到我的建议不适用于 Coder 想要做的事情后,我更新了我的答案。【参考方案3】:

一切正常。

RadioButtonList.Items[index].Enable=True/False;

例如:

rdTypePackage.Items[1].Enabled = false;

【讨论】:

这不会隐藏 ListItem,它只会在页面上显示为禁用。【参考方案4】:
radioListID.Items[index].Enabled = true/false;

它将 100% 工作。

【讨论】:

这不会隐藏 ListItem,它只会在页面上显示为禁用。【参考方案5】:

旧线程,虽然你可以做到这一点:

//Ensure the item is disabled    
rblRating.Items[0].Enabled = false;
//Ensure the item is not selected
rblRating.Items[0].Selected = false;
//next row of code is hiding your radio button list item through css
rblRating.Items[0].Attributes[htmlTextWriterStyle.Visibility] = "hidden";

【讨论】:

【参考方案6】:
ListItem li = Rating.Items(0);
Rating.Items.Remove(li);

【讨论】:

以上是关于是否可以以编程方式隐藏单选按钮列表的特定列表项?的主要内容,如果未能解决你的问题,请参考以下文章

根据表格数据隐藏和显示单选按钮

隐藏单选按钮图标但不隐藏文本

如何以编程方式在自定义列表视图中进行更改以立即反映?

单击提交后如何获取选定的单选按钮以显示特定的隐藏 div?

以编程方式设置单选按钮上的按钮色调

在 Javascript/JQuery 中选择单选选项时,是不是可以动态更改下拉列表的颜色或更改列表项的颜色?