选择值无效..我知道为什么,但我不知道如何处理它
本文关键字:何处理 处理 我不知道 无效 我知道 为什么 选择 | 更新日期: 2023-09-27 18:30:41
我在 asp.net 中有一个网格视图/数据网格,其中包含模板列(我不使用数据绑定列)。其中一列的内部是一个下拉列表。 基本上,此下拉列表的数据源是存储我们的活动用户的查询...由于数据集的大小,我们不希望显示所有非活动和活动用户,因此我们限制为活动用户。
基本上sql就是这样的东西:
SELECT EmployeeName FROM Employee WHERE Inactive=0
这工作正常,但我有一条记录实际上引用了不活跃的员工,这种情况很少发生,但在某些情况下可能会发生这种情况。 在网格视图之外,使用页面上的下拉列表,我可以通过尝试/捕获异常并重新加载下拉列表来轻松处理此问题,以便它也可以包含非活动员工。
但是在网格视图中,我不知道如何"捕获"此异常,因为该列只有一个:
SelectedValue ='<%# Eval("EmployeeName") %>'
因此,由于该页面引用了不活跃的员工,因此我收到错误:
ddlEmployees' 有一个无效的 SelectedValue,因为它没有 存在于项目列表中。参数名称:值
说明:执行 当前 Web 请求。请查看堆栈跟踪以获取更多信息 有关错误及其在代码中起源位置的信息。
异常详细信息:System.ArgumentOutOfRangeException:"ddlEmployees" 有一个无效的选定值,因为它不存在于 项目列表。参数名称:值
所以我知道为什么会发生这种情况,如果这是网格视图之外的下拉列表,我实际上可以解决这个问题,但由于它在网格视图中,我不确定如何处理这个问题?
我需要在 RowDataBound 事件中处理这个问题吗? 还是有一些 asp.net 标记只是说忽略它是否是一个错误的值? 像这样:
<asp:DropDownList ID="ddlEmployees" runat="server" SelectedValue='<%# Eval("Employee") == null ? 0 : Eval("Employee") %>'
我甚至可以使用三元运算符吗?
您的下拉列表。我假设EmployeeName
在这里是一个列,让我们假设它可以具有空值。[ 提供正确的列名称 ]
SelectedValue='<%#String.IsNullOrEmpty(Convert.ToString(Bind("EmployeeName")))
? "0" : Bind("EmployeeName") %>'
此外,您可以在 Sql 语句本身中执行此操作:
SELECT IsNull(EmployeeName,0) AS EmployeeName FROM Employees
从 aspx 的下拉列表中删除所选值。定义数据源和数据成员,如下面的代码。希望对您有所帮助。
try
{
if (e.Row.RowType == DataControlRowType.Header)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("ddlSorting");
SqlDataAdapter da = new SqlDataAdapter("SELECT ID,EmployeeName FROM Employee WHERE Inactive=0", con);
DataSet ds = new DataSet();
da.Fill(ds);
ddl.DataSource = ds.Tables[0];
ddl.DataTextField = "EmployeeName";
ddl.DataValueField = "ID";
ddl.DataBind();
}
}
catch (Exception ex)
{
}