我已经在许多地方搜索了关于我的问题的信息,没有任何运气。此外,根据这个post它应该工作,但我无法复制。
我的最终目标是根据特定条件禁用RadioButtonList中的输入。到目前为止,我已经尝试了许多解决方案,但没有任何运气,在这样做的时候,我还想检查是否可以添加CSS类到输入或/和它的相应标签。就在那时,我偶然发现了我提到的那篇文章。
当查看帖子时,作者还将RadioButtonList中的第一项设置为“enable = false”,这也是我最终想要做的。然后,作者询问如何将特定CSS类添加到RadioButtonList中的特定项中。
确认的答案表明他可以循环RadioButtonList中的项目(ListItems),以便检查某个条件,然后修改特定的项目。
现在,我已经尝试过这个解决方案之前和其他几个没有任何成功。此外,在进一步调查这一点时,我还问ChatGPT“它”将如何解决我的问题。经过一个相当耗时的讨论,“它”得出结论,这将是不可能实现的,因为RadioButtonList中的ListItems是使用DataSource和DataBind创建的。结论是:
It seems that modifying the Enabled property of a ListItem after data binding does not affect the generated HTML. The Enabled property of a ListItem only affects server-side processing and does not directly control the disabled state of the generated HTML <input> element.
所以,我的问题是,这是否可能?根据帖子,它应该是,但我无法复制这个。
这是我的代码,但我不能将输入字段设置为“disabled”,也不能将任何CSS类设置为ListItem。
.aspx文件中的代码:
<asp:RadioButtonList ID="Test" AutoPostBack="true" runat="server" RepeatLayout="UnorderedList"></asp:RadioButtonList>
.aspx.cs文件中的代码:
Test.DataTextField = dtDimHorizontal.Columns[0].ColumnName;
Test.DataValueField = dtDimHorizontal.Columns[1].ColumnName;
Test.DataSource = dtDimHorizontal;
Test.DataBind();
Test.Items[0].Enabled = false; // Does not set the first item to disabled?
foreach (ListItem item in Test.Items)
{
if (item.Text == "10") // The ListItems are found as are the condition when debugging.
{
item.Attributes.Add("class", "Test"); // Does not set the class to the item in the html. Steps into the code when condition is mett when debugging.
}
else
{
item.Attributes.Add("class", "Test other"); // Does not set the class to other ListItems. The ListItems and conditions are found when debugging and steps into the code but no CSS class is being output to the html.
}
}
1条答案
按热度按时间u3r8eeie1#
首先,我并不热衷于禁用单选按钮列表中的选项,因为这通常会让用户“困惑”。如果你不想要这个选项,那么我建议你从列表中删除这个选项。
但是,您当然可以设置样式,或者禁用RB列表中的每个项目。
假设我们有这个标记:
要加载的代码如下:
现在我们看到/得到这个:
所以,这里没什么特别的。
现在,我们可以改变我们的代码加载为“启用”或“禁用”一些选项。如果你仔细看,我拉取的数据表有一个“活动”列。
因此,让我们启用(或禁用)数据源中Active列(SQL位列)的位置。
然而,虽然我们将禁用选择,我们最好改变说颜色或一些这样的。
现在,我可以将上面的“一次性发送”数据表直接保存到RB列表中。然后我可以循环项目列表。
然而,由于我要循环行,那么也可以使用代码以我想要的方式添加和设置ListItem。
所以,我们的代码现在变成这样:
所以,请注意我们如何设置enabled = false(用户不能选择),然后我添加了color = red的样式。
现在的结果是这样的,红色的不能被选中。
例如:
现在,当然没有什么可以阻止我从一个数据源绑定RB列表,然后说设置样式,或者为每个项目启用/禁用。因此,在绑定之后可以自由地循环/处理RB“items”集合,或者可以编写代码来向items集合添加项。
所以,回答你的问题:
可以,您可以启用/禁用RB列表中的项目
是的,您可以设置/更改单个项目的样式-也许是为了反映该选项是否启用。
但是,我不相信您可以设置类,并且在呈现过程中,class属性看起来并不持久。
然而,如上所示,“enabled/disabled”和样式确实起作用,并且在为RB列表生成的标记中持久存在。