【问题标题】:How can I add 'editable' checkbox in ASP.NET?如何在 ASP.NET 中添加“可编辑”复选框?
【发布时间】:2017-04-19 02:26:42
【问题描述】:

我想实现这样的东西 如果选中“其他”复选框,则与其相邻的文本变为可编辑,或者添加一个新复选框,其中复选框的文本可根据用户选择进行编辑。可以在 ASP.NET 中实现吗?

我尝试过的

我使用 jQuery 即时添加了复选框,但这些复选框在 ASp.NET 代码中无法访问,因此我无法使用它。我还查看了 onselectedindex 事件,但找不到可以将复选框添加到 CheckBoxList '带有可编辑文本'的方法。

Your favour subject?<br><br>
<input type=checkbox > <label>Physics</label>
<input type=checkbox > <label>chemistry</label>
<input type=checkbox > <label>Math</label>
<input type=checkbox > <label>Other</label> _______________________

我想要一些非常接近 this jsfiddle 的东西,问题是 jQuery 的东西在服务器端无法访问。我认为我应该能够仅通过 Ajax 将新创建的复选框与旧复选框一起发送到将保存它们的数据库,但这会使我的逻辑变得复杂,因为我在页面上还有其他控件。

【问题讨论】:

  • 首先所有这些复选框都链接到一个输入吗?就像您只是发布一个所有附加值用逗号分隔的字符串一样吗?还是所有复选框都是用自己的 ID 输入的?
  • @Canvas 是的,它们属于一个。我正在使用 CheckBoxList 控件。但是,每个复选框都存储在数据库中的单独列中。不使用 CSV 格式。不过我可以考虑。
  • 实际上,如果您正在提交表单,则可以从请求对象访问新添加的控件,而不是仅使用名称即可访问
  • 嗯,这是个好主意。我会试一试的。

标签: jquery asp.net ajax checkbox dynamic


【解决方案1】:

您应该使用CheckBoxList 控件。将其添加到页面并将 OnSelectedIndexChanged 添加到 CheckBoxList 并将 AutoPostBack 设置为 true

<asp:CheckBoxList ID="CheckBoxList1" runat="server" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged" AutoPostBack="true">
    <asp:ListItem Text="Physics" Value="1"></asp:ListItem>
    <asp:ListItem Text="Chemistry" Value="2"></asp:ListItem>
    <asp:ListItem Text="Math" Value="3"></asp:ListItem>
    <asp:ListItem Text="Other" Value="0"></asp:ListItem>
</asp:CheckBoxList>

<asp:TextBox ID="TextBox1" runat="server" Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox1" Enabled="false"></asp:RequiredFieldValidator>

然后在后面的代码中

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
    TextBox1.Visible = false;
    RequiredFieldValidator1.Enabled = false;

    foreach (ListItem item in CheckBoxList1.Items)
    {
        if (item.Value == "0" && item.Selected == true)
        {
            TextBox1.Visible = true;
            RequiredFieldValidator1.Enabled = true;
        }
    }
}

【讨论】:

  • 但是我想要复选框而不是单选按钮,因为用户可以选择多个选项。恐怕你的代码没有解决那部分。
  • 我已经修改了我的答案。在某处,我将复选框更改为单选按钮...
  • 这可能有效,但已经在 jQuery 中实现了这个解决方案,效果很好(没有页面刷新),问题是,我想在已经使用其他复选框时添加另一个复选框,因此用户可以继续添加'其他'。这是问题变得棘手的地方吗?你认为有什么巧妙的方法吗?我需要尽快完成,但我找不到合适的解决方案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多