Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何修复“'DDLSassignedTo'具有无效的SelectedValue,因为它不存在于项目列表中_Asp.net_Vb.net_Gridview - Fatal编程技术网

Asp.net 如何修复“'DDLSassignedTo'具有无效的SelectedValue,因为它不存在于项目列表中

Asp.net 如何修复“'DDLSassignedTo'具有无效的SelectedValue,因为它不存在于项目列表中,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,我加载gridview,gridview有一个编辑和删除按钮 我点击编辑,我得到,DDLSassignedTo'有一个SelectedValue,该值无效,因为它不在项目列表中。 参数名称:value 我知道我得到这个错误是因为DDLSassignedTo的值为空-DDLSassignedTo的数据库中不存在任何内容 我所要做的就是更新当前值 所以,我的问题是,如果当前值为null,如何为ddlsignedTo分配默认值,以便在db上当前不存在值的情况下,以默认值为准 以下是一些代码: 标记:

我加载gridview,gridview有一个编辑和删除按钮

我点击编辑,我得到,DDLSassignedTo'有一个SelectedValue,该值无效,因为它不在项目列表中。 参数名称:value

我知道我得到这个错误是因为DDLSassignedTo的值为空-DDLSassignedTo的数据库中不存在任何内容

我所要做的就是更新当前值

所以,我的问题是,如果当前值为null,如何为ddlsignedTo分配默认值,以便在db上当前不存在值的情况下,以默认值为准

以下是一些代码:

标记:

<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>

请看@cosmin.onea在问题中提供的解决方案


此解决方案在DropDownList上设置AppendDataBoundItems=true,并创建一个可为null的ListItem,以便即使在表中的字段为null时,DropDownList也将绑定

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

<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>
<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>

您好,我检查了同样的问题。我的问题是,数据字段的索引号。我使用数据字段索引号,如表[3],在创建gridview后,我更改了数据库表的顺序


毕竟,我使用了字段名称而不是字段索引号,问题已经解决。

您在命令SQL Server中遇到的问题,必须在事件激活时将下拉列表的id与当前id进行匹配,然后问题已经解决

请再次参阅包含两个表的键以便查询

BinName必须与命令查询中的名称匹配


此解决方案在DropDownList上设置AppendDataBoundItems=true,并创建一个可为null的ListItem,以便即使在表中的字段为null时,DropDownList也将绑定

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

<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>
<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>
在此解决方案中,如果用户未选择有效项,则在保存时可能会出现问题。 所以你也可以设置

<asp:ListItem Text="Select" Value="" />
as Enabled=false 然后,当您打开一个新项目时,它将带来数据库中存在的一个项目


我也遇到了同样的问题,问题也解决了。

我不明白您为什么在代码中选择了edValue=。删除它会发生什么?只要错误消失并成功修改,就会发生这种情况。但唯一的问题是,如果我需要用另一个值替换AssignedTo的当前值,当我单击“编辑”时,我需要查看当前值。现在,它显示为空。虽然您可以从下拉列表中选择它,但如果在编辑模式下将其视为预选的,那就太好了。尝试在edittemplate中放置另一个标签以查看当前值我尝试过,但当我单击edit进入编辑模式时,我再也看不到下拉列表。我只看到了value。