如何修复“'ddlAssignedTo' 有一个无效的 SelectedValue,因为它不存在于项目列表中

2023-11-27

我加载网格视图,网格视图有一个编辑和删除按钮。

我点击“编辑”,然后我得到:“ddlAssignedTo' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value

我知道我收到此错误是因为ddlAssignedTo为 null - ddlAssignedTo 的数据库中不存在任何内容。

我想做的就是更新当前值。

所以,我的问题是,如果当前值为空,如何为 ddlAssignedTo 分配默认值,以便如果数据库中当前不存在值,则以默认值为准?

这是一些代码:

Markup:

<asp:TemplateField HeaderText="Assigned To">
    <EditItemTemplate>
      <asp:DropDownList ID="ddlAssignedTo" runat="server" 
                        DataSourceID="SubjectDataSource"
                        DataTextField="fullname" DataValueField="empl_Id"
                        SelectedValue='<%# Bind("AssignedTo") %>'>
        <asp:ListItem Value="">--Select Name--</asp:ListItem>
      </asp:DropDownList>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="lblAssigned" runat="server" 
                   Text='<% #Bind("fullname") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                   ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                   SelectCommand="SELECT Distinct [rownum],[reqnum], AssignedTo, (empl_first + ' ' + empl_last) fullname, [reqrecdate], [reqrecfrom], [skillsets], [application], [hoursperweek], [fromdate], [todate], [status], [statusupdate], [statusupby] FROM [requestinfo] left join employee on requestInfo.AssignedTo=employee.empl_id ORDER BY [reqnum]" 
                   UpdateCommand="INSERT INTO [requestinfo] ([reqnum], [reqrecdate], [reqrecfrom], [skillsets], [application], [hoursperweek], [fromdate], [todate], [status], [statusupdate], [statusupby],[AssignedTo]) VALUES (@reqnum, @reqrecdate, @reqrecfrom, @skillsets, @application, @hoursperweek, @fromdate, @todate, @status, @statusupdate, @statusupby,@empl_id)">
    <DeleteParameters>
        <asp:Parameter Name="rownum" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="reqnum" Type="String" />
        <asp:Parameter DbType="DateTime" Name="reqrecdate" />
        <asp:Parameter Name="reqrecfrom" Type="String" />
        <asp:Parameter Name="skillsets" Type="String" />
        <asp:Parameter Name="application" Type="String" />
        <asp:Parameter Name="hoursperweek" Type="Int32" />
        <asp:Parameter DbType="DateTime" Name="fromdate" />
        <asp:Parameter DbType="DateTime" Name="todate" />
        <asp:Parameter Name="status" Type="String" />
        <asp:Parameter DbType="DateTime" Name="statusupdate" />
        <asp:Parameter Name="statusupby" Type="String" />
        <asp:Parameter Name="empl_id" Type="String" />
        <asp:Parameter Name="rownum" Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SubjectDataSource" runat="server" 
                   ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                   SelectCommand="SELECT empl_id,  (empl_first + ' ' + empl_last) fullname FROM dbo.Employee order by empl_last">
</asp:SqlDataSource>

隐藏代码:

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating

    Dim dd As DropDownList = DirectCast(GridView1.Rows(e.RowIndex).FindControl("ddlstatus"), DropDownList)
    e.NewValues("status") = dd.SelectedItem.Text
    Dim ddAssigned As DropDownList = DirectCast(GridView1.Rows(e.RowIndex).FindControl("ddlAssignedTo"), DropDownList)

    If String.IsNullOrEmpty(ddAssigned.SelectedValue) Then
        ddAssigned.SelectedValue = "shhhh"
    Else
        e.NewValues("empl_id") = ddAssigned.SelectedValue
    End If

    SqlDataSource1.DataBind()
End Sub

看看问题中@cosmin.onea提供的解决方案“DropDownList1”的 SelectedValue 无效,因为它不存在于项目列表中

该解决方案设置AppendDataBoundItems="true" on the DropDownList并创建一个nullableListItem 以便您的DropDownList即使表中的字段为空也会绑定。

应用于OP的问题时,以下代码片段将提供一个选项,当AssignedTo字段为空时将选择该选项。

<asp:DropDownList ID="ddlAssignedTo" runat="server" 
    DataSourceID="SubjectDataSource" 
    DataTextField="fullname" DataValueField="empl_Id" 
    SelectedValue='<%# Bind("AssignedTo") %>' 
    AppendDataBoundItems="true">
        <asp:ListItem Text="Select" Value="" />
</asp:DropDownList>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复“'ddlAssignedTo' 有一个无效的 SelectedValue,因为它不存在于项目列表中 的相关文章

随机推荐

  • 什么是 uml 构造型以及如何使用它

    我正在为JAVA 软件设计绘制一个类UML 我实在不明白什么是刻板印象 正式定义 构造型是一个概要文件类 它定义如何将现有元类扩展为概要文件的一部分 它允许使用特定于平台或领域的术语或符号来代替或补充用于扩展元类的术语或符号 这是否意味着构
  • 将 0 移至数组末尾

    我需要将数组中的所有 0 移动到数组的末尾 示例 1 10 0 5 7 应该得到 1 10 5 7 0 我愿意做反向循环或常规循环 I cannot创建一个新数组 这是我到目前为止所拥有的 for int i arr length i lt
  • 从 csv 文件读取并根据第一列值提取某些数据列

    这是我的第一个批处理程序 我一直在网上搜索 但仍在努力编写解决方案 我有以下 CSV 文件 RH 2013 06 15 02 14 58 0400 X LQ3SUEEWPWKL6 005 FH 01 SH 2013 06 14 00 00
  • unix shell 中的数组?

    如何在 unix shell 脚本中创建数组 以下代码在 shell 中创建并打印字符串数组 bin bash array A B ElementC ElementE for element in array do echo element
  • 在 iPhone 上按下控制器时翻转动画

    我环顾四周 没有找到我真正想要的东西 有没有办法在推动视图控制器时获得翻转动画 我读到您可以通过使用模态视图控制器来更改动画 但据我所知模态视图的动画是从下到上的 这不是我想要的 有没有办法以某种方式获得翻转动画 像这样的东西应该有效 UI
  • 从控制台读取字符

    我编写控制台应用程序 它对 int 执行多次 scanf 之后 我执行 getchar int x y char c printf x n scanf d x printf y n scanf d y c getchar 结果我得到c n
  • 带 lapply 和 sapply 的日期

    我导入了一个包含大量日期的 CSV 文件 并使用 as Date 函数来转换日期 但是 当我使用 mapply 函数查找两个日期中较早的一个时 我最终要么得到一个包含日期的列表 要么得到一个数字向量 如何获得带有日期的向量 POP Star
  • 如何在没有原始 Markdown 输出的情况下使用 knitr 块将元素添加到绘图中?

    出于记录目的 我想要一些 html 输出中的情节代码 但不是情节 后来 我必须调用绘图代码 并向绘图添加一些内容 但只能看到附加代码 我试过这个 r non finished plotting eval FALSE plot 1 type
  • 我可以从 android webview 打开 Whatsapp 应用程序吗

    我制作了一个网站的网络视图 现在我想将我的网络视图中的一些数据共享到 Whatsapp 应用程序 我能够打开 Whatsapp 网页 但我的客户希望我打开 Whatsapp 应用程序而不是 Whatsapp 网页 我怎样才能做到这一点 这就
  • 最大自定义窗口失去投影效果

    我有一个自定义 WPF 窗口定义为
  • 错误 BC30456:“[方法]”不是“ASP.[CodeBehind]_aspx”的成员

    很简单的问题 我非常确定我已经正确链接了类 方法 代码隐藏等 网上很多帖子都说这与编译和 或 dll bin 文件有关 但他们的帮助都对我不起作用 Compiler Error Message BC30456 gvLegs PageInde
  • 如何在 Windows 上使用 Python 捕获 SIGINT?

    如同这个问题 在 Python 2 7 下的 UNIX 上 在 Python 提示符下 gt gt gt import signal gt gt gt def handler signal frame print welcome to th
  • 如何使用ID删除NDB实体?

    基于此文档https developers google com appengine docs python ndb entities deleting entities好吧 我仍然不确定为什么我不能在 NDB 上进行删除 def get
  • 与 JComponent 相比,在 JPanel 上绘画有什么好处?

    所以在最近的一个回答中 有人评论了这一点 关于绘画 这可能是 90 Swing 程序员的某种毛病 当他们制作自己的组件时 他们总是扩展 JPanel 而不是 JComponent 为什么呢 我对编程还很陌生 所以我认为现在称自己为 Swin
  • 从另一个apk获取资源

    我整天都在为这个问题苦苦挣扎 但没有成功 我基本上是想从另一个应用程序获取图像资源 因此 如果 com example app 在 res 文件夹中有一个名为 image1 png 的图像 我希望 com example2 app 能够访问
  • AutoMapper 将目标对象的属性设置为 null

    我有这样的事情 public class DomainEntity public string Name get set public string Street get set public IEnumerable
  • 将私钥添加到 X509Certificate

    我正在编写一些当前使用 OpenSSL net 为证书签名请求创建公钥 私钥对的代码 该请求配备有公钥并发送到 CA CA 返回签名证书 然后将之前创建的私钥添加到证书中 myCert PrivateKey CryptoKey FromPr
  • 如何从 AWS SAM 获取堆栈输出?

    我想对我的无服务器项目执行自动集成测试 为此 我需要以某种方式获取 api 端点 已经有插件 serverless stack output用于服务于该目的的无服务器框架 但我想知道在部署应用程序后如何通过 AWS SAM 实现类似的目标
  • 客户端向服务器发送延迟的 FIN ACK(约 500 毫秒)

    我有一个 node js 客户端 10 177 62 7 请求来自服务器 10 177 0 1 的 http Rest 服务的一些数据 客户端只需使用node js http request 方法 agent false 客户端位于 Ubu
  • 如何修复“'ddlAssignedTo' 有一个无效的 SelectedValue,因为它不存在于项目列表中

    我加载网格视图 网格视图有一个编辑和删除按钮 我点击 编辑 然后我得到 ddlAssignedTo has a SelectedValue which is invalid because it does not exist in the