无法使用GridView进行更新

时间:2015-12-13 22:56:17

标签: c# html asp.net gridview data-binding

在我的下拉列表控件中选择一个listitem之后,我似乎无法更新数据库。有人知道为什么吗?

我收到此错误消息:

' DDL'有一个SelectedValue无效,因为它在items列表中不存在。参数名称:值

这是标记:

<asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataSourceID="OrdersDataSource" ForeColor="Black" GridLines="Horizontal" AutoGenerateColumns="False" CssClass="gridview" DataKeyNames="OrderId">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:TemplateField HeaderText="Status" SortExpression="Status">
                <EditItemTemplate>
                    <asp:DropDownList ID="ddl" runat="server" DataTextField="Status" DataValueField="Status" SelectedValue='<%# Bind("Status") %>'>
                    <asp:ListItem Text="Yes" Value="1"></asp:ListItem>
                    <asp:ListItem Text="No" Value="2"></asp:ListItem>
                </asp:DropDownList>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="OrderId" HeaderText="OrderId" InsertVisible="False" ReadOnly="True" SortExpression="OrderId" />
        </Columns>
</asp:GridView>
<asp:SqlDataSource ID="OrdersDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectConnectionString1 %>" SelectCommand="SELECT [Status], [OrderId] FROM [Order]" UpdateCommand="UPDATE [Order] SET [Status] = @Status WHERE [OrderId] = @OrderId">
    <UpdateParameters>
        <asp:Parameter Name="Status" Type="String" />
        <asp:Parameter Name="OrderId" Type="Int32" />
    </UpdateParameters>
    </asp:SqlDataSource>

1 个答案:

答案 0 :(得分:0)

您的状态下拉列表的值为&#34; 1&#34;和&#34; 2&#34;。您尝试绑定到它的一个或多个状态不是&#34; 1&#34;或&#34; 2&#34;。您必须对其进行更改,以便您尝试将其绑定到的任何状态都显示在可能值列表中。

在状态列中查看查询结果,以确定值是什么,并将它们添加为可能的值。