【问题标题】:Get selected value from DB and other hard coded values in dropdownlist asp.net从 DB 和下拉列表 asp.net 中的其他硬编码值中获取选定的值
【发布时间】:2013-08-21 12:45:23
【问题描述】:

我有一个带有编辑功能的gridview。在性别列,我有一个下拉列表,应该给我两个替代的 Herr/Frau 并且还正确绑定选定的值。

目前,只要我在数据库中同时显示这两个值,它就可以完美运行。我的意思是我必须在 db 中至少有一个男性客户和一个女性客户。如果我所有的客户都是男性,我的下拉列表中只有替代的“Herr”。

谁能解释我如何解决这个问题,所以我可以选择将 Herr 编辑为 Frau,而无需任何客户在 db 中具有 Frau 值。

我认为我必须对我的选择进行一些更改,因为目前我只收集不同的性别值。

这里有一些代码:

<asp:TemplateField HeaderText="Anrede" SortExpression="Gender">
            <EditItemTemplate>
                <asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="SqlDataSource1" DataTextField="Gender" DataValueField="Gender" SelectedValue='<%# Bind("Gender") %>'>
                </asp:DropDownList>
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:EventConnectionString %>" SelectCommand="SELECT DISTINCT [Gender] FROM [Customer]"></asp:SqlDataSource>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Gender") %>'></asp:Label>
            </ItemTemplate>

【问题讨论】:

    标签: asp.net sql tsql gridview drop-down-menu


    【解决方案1】:

    替换

    "SELECT DISTINCT [Gender] FROM [Customer]"
    

    与

    "SELECT 'Herr' [Gender] UNION ALL SELECT 'Frau' [Gender]"
    

    这不会查找源表中存在的内容。它对所需的项目进行硬编码。

    您想添加“Fräulein”吗?没问题。使用

    "SELECT 'Herr' [Gender] UNION ALL SELECT 'Frau' [Gender] UNION ALL SELECT 'Fräulein' [Gender]"
    

    这当然是一个丑陋的解决方法。您根本不应该通过询问事实表来填充您的下拉列表。询问包含“先生”和“夫人”或“先生”和“女士”等值并按区域标准对它们进行排序的维度表似乎更合理。

    【讨论】:

    • 当我遵循你的建议时,我遇到了这个问题。'DropDownList3' 有一个无效的 SelectedValue,因为它不存在于项目列表中。
    • 似乎下拉列表就像一个过滤器。如果您选择的值不在客户列表中,它会找不到它并抱怨。您需要将结果放入可用于编辑而非过滤的列表中。
    【解决方案2】:

    您从一个单独的参考表中填充下拉列表,该表包含诸如性别、头衔等允许的值。这简化了根据需要添加更多选项的过程。目前我从事社会关怀案例管理系统的工作,性别可以是男性、女性、未知或未定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-06
      • 2017-07-29
      • 2019-03-07
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多