使用UpdateParameters从SqlDataAdapter更新数据库

时间:2014-03-28 19:17:03

标签: asp.net gridview sqldatasource

我遇到问题,需要帮助,我有SqlDataSource的网格视图绑定:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource2">
    <Columns>
        <asp:CommandField ShowEditButton="true" />
        <asp:BoundField DataField="DateOpened" HeaderText="DateOpened" 
            SortExpression="DateOpened" />
        <asp:BoundField DataField="rName" HeaderText="rName" SortExpression="rName" />
        <asp:BoundField DataField="DateOfArrival" HeaderText="DateOfArrival" 
            SortExpression="DateOfArrival"/>
        <asp:BoundField DataField="Quantity" HeaderText="Quantity" 
            SortExpression="Quantity"/>
        <asp:BoundField DataField="sName" HeaderText="sName" SortExpression="sName" />
        <asp:TemplateField HeaderText="osName" SortExpression="osName">
            <EditItemTemplate>
                <asp:DropDownList runat="server" ID="OrderStatusDDL">
                <asp:ListItem>הוזמן</asp:ListItem>
                <asp:ListItem>מתעכב</asp:ListItem>
                <asp:ListItem>התקבל</asp:ListItem>
                </asp:DropDownList> 
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("osName") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

SqlDataSource

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:igroup9_test1ConnectionString %>" 
    SelectCommand="spGetOrdersListForProject" 
    SelectCommandType="StoredProcedure" UpdateCommandType="StoredProcedure" UpdateCommand="spUpdateOrderStatus" >
    <SelectParameters>
        <asp:ControlParameter ControlID="ProjectIDHolder" DefaultValue="" 
            Name="ProjectID" PropertyName="Text" Type="Int32" />
    </SelectParameters>

    <UpdateParameters>
       <asp:ControlParameter ControlID="ProjectIDHolder" DefaultValue="" 
               Name="@projectid" PropertyName="Text" Type="Int32" />
       <asp:ControlParameter Name="@osID"  PropertyName="Text" Type="Int32"  
               ControlID="OrderStatusDDL" />
    </UpdateParameters>
</asp:SqlDataSource>

我想修改osName列,当我按下Edit按钮并尝试从下拉列表中选择其他值时,我想更新osId({{1 }})在数据库中,但我收到此错误:

  

无法找到控件&#39; OrderStatusDDL&#39;在ControlParameter&#39; @ osID&#39;。

2 个答案:

答案 0 :(得分:0)

网页上的GridView是否使用了MasterPage?如果是,则需要在控件前添加ContentPlaceHolder的ID。

<asp:ControlParameter Name="@osID"  PropertyName="Text" Type="Int32"
ControlID="ContentPlaceholderID$OrderStatusDDL" />

答案 1 :(得分:0)

看起来您正在尝试将OrderStatusDDL.SelectedValue的文本值传递到int字段中。尝试将Type更改为字符串,看看是否有帮助。

<asp:ControlParameter Name="@osID"  PropertyName="Text" Type="String" ControlID="OrderStatusDDL" />

我不知道这是否会有所帮助,但它可能是一个好的起点。