【问题标题】:Add value to Drop Down list when exception occurs发生异常时向下拉列表添加值
【发布时间】:2014-11-06 16:27:29
【问题描述】:

我有一个 ASP .NET(4.0) 网络应用程序。 Web 应用程序有一个包含下拉列表的表单视图。下拉列表填充如下:

<asp:DropDownList ID="ddlStaff" runat="server" 
   DataSourceID="StaffDatasource" DataTextField="StaffName" 
   DataValueField="StaffName" AppendDataBoundItems="True" 
   SelectedValue='<%# Bind("Staff") %>' >
   <asp:ListItem Value=""></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="StaffDatasource" runat="server" 
   ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
   SelectCommand="*****">
</asp:SqlDataSource>

员工列表不断变化,因此问题是 SelectedValue 引发错误,因为该员工不再存在。

我知道您可以检查该项目是否存在于列表中并捕获异常。我想知道的是,如果“不存在”的工作人员不存在,是否有办法在下拉列表中显示它们?虽然姓名未列出,但员工姓名与记录一起存储。我想这样做的原因是因为用户需要查看分配给该记录的人,即使他们不再存在。

编辑:更多细节

这是用户希望它的工作方式。

  • 缺少员工姓名(如果未列出,则会选择此名称,并且应仅针对该记录显示)
  • 亚当
  • 阿比盖尔
  • 布兰登
  • .....

如果可以做到这一点,那么我可以让他们知道,我会在抛出异常时让它选择 null。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    如果该成员不在列表中,则他不在场。你为什么想要这种行为?用户需要老会员吗?

    您可以创建一个包含所有新旧成员的列表 - 但您必须对列表进行编码而不是声明。你不能用源代码控制来做到这一点。您可以简单地提供一个集合用作数据源。

    希望这会有所帮助。

    【讨论】:

    • 我添加了更多细节。公司需要保留分配给该记录的人员的历史记录,即使他们不存在。我想把它变成一个文本框,以便他们可以输入员工姓名,但他们真的很喜欢下拉列表,因为它很方便。
    • 好的,我明白了 - 我会创建列表 - 在代码隐藏中结合 Query - 创建用户集合并将其作为数据源。或者,也许您应该创建两张表,一张为老成员,一张为新成员,然后加入他们。并使用结果行,然后您的绑定将起作用。您应该只使用 selectedIndex = -1 而不是选择 null IMO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多