【问题标题】:Remove Duplicates from DropDownList that is data bound in FormView从在 FormView 中绑定数据的 DropDownList 中删除重复项
【发布时间】:2021-02-07 14:25:01
【问题描述】:

C# --- ASP.Net WebForm 使用 FormView 控件

我的问题是我正在使用 FormView 来允许用户编辑数据库中的某些字段。其中一个字段的值已经是yes 或no。如果它不是,我允许用户将值更改为是,如果是,则更改为否。我通过添加 1 的列表值来做到这一点。 ------选择是或否-----,2. 是和 3. 否。请记住,页面将使用来自数据库的值是或否加载。如果数据库中的值为否,我可以只为用户提供选择为是的选项,那将是很棒的。或者,仅在来自数据库的值为 yes 时提供选择 no 的选项。这听起来比从下拉列表中删除重复的显示值要复杂一些。我的选项 91 的手动列表中有以下内容。 ------选择是或否-----,2. 是和 3. 否)但我也有值显示在列表中。这使得它看起来像我有一个重复的是或重复的否。我尝试了一些我看到的代码,可以消除欺骗的显示,但我无法从中找出错误。我将在下面提供。我希望我已经正确解释了这一点。

ASPX 页面

<asp:DropDownList ID="DropDownList1" runat="server" Text='<%# Bind("New_or_exisitng") %>'      AppendDataBoundItems="True" DataSourceID="SqlDataSource2" DataTextField="New_or_exisitng" DataValueField="New_or_exisitng">
                                <asp:ListItem>Select</asp:ListItem>
                                <asp:ListItem>New</asp:ListItem>
                                <asp:ListItem>Back-Filled</asp:ListItem>
                            </asp:DropDownList>

代码背后

protected void Page_Load(object sender, EventArgs e, object DropDownList1)
    {
        DropDownList MyTextBox = (DropDownList)FormView1.FindControl("DropDownList1");
        if (!DropDownList1.Items.Contains(new ListItem(data)))
        {
            DropDownList1.Items.Add(data);
        }
    }

我收到关于项目和(数据)的错误))

【问题讨论】:

  • 我也试过这个:
  • 哎呀,代替所有这些是,不,也许,我不确定和一个复杂的下拉?为什么不只是放置一个复选框。然后他们只能单击它以将其从是更改为否,并且您可以根据所需的代码来拯救世界贫困。
  • 我会试试@Albert D. Kallal
  • 问题是您仍然会显示以前的值。此功能的全部目的是允许用户更改不正确的值,但他们需要查看该值以确定它是否不正确。
  • 当用户想要恢复他/她所做的选择时会发生什么?如果现有值是yes,并且只有no 作为唯一选择,并且一旦用户选择no,用户就无法在不保存no 并重新加载页面的情况下返回yes。这就是你想要的用户体验?

标签: c# asp.net .net sql-server webforms


【解决方案1】:

这对于 UI 中的某些人来说是非常困难的。相反,我在数据库中开发了额外的表来解决这个问题。我创建了一个(代码表),其中包含用户需要选择的所有值。

id Typeid 名称 描述 Createddate 1 1 是 是 2020-10-25 08:22:59.7233333 2 1 没有 没有 2020-10-25 08:23:12.5300000 3 2 新 新 2020-10-25 08:24:26.4766667 4 2 回填 回填 2020-10-25 08:24:55.0233333 5 3 裁员 裁员 2020-10-25 08:25:38.4600000 6 3 营业额营业额 2020-10-25 08:26:05.1133333

然后,我在 DropDownList 中使用了 Text with Bind,以便始终首先显示先前在数据库中提交的值。 Text=''

我没有使用 AppendDataBoundItems。此用例中不需要。 使用数据库方法,我也不需要项目列表,因为这些值来自表。下面是完整的 DropDownList。背后没有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2010-10-15
    • 2013-06-09
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多