1

我在gridview中有ddl,它与gridview的其余部分分开绑定。我想根据 ddl 更新 sql 数据库,但出现错误“在 ControlParameter '' 中找不到控件 'ddlUsers'。”

Public Sub BindGridView()
    'bind gridview
    SqlDataSource1.SelectCommand = "Select * From Leadership Left Outer Join Customer On Leadership.CustomerId = Customer.CustomerId"
    SqlDataSource1.DataBind()

    'binding dropdownlist inside of gridview
    SqlDataSource2.SelectCommand = "SELECT LName + ', ' + FName As Name, CustomerId From Customer Where Active = 'True' And Probation = 'False' Order by LName ASC"
    SqlDataSource2.DataBind()

End Sub

Protected Sub GridView1_RowUpdating(sender As Object, e As GridViewUpdateEventArgs)
    Dim ddl As DropDownList = DirectCast(GridView1.Rows(e.RowIndex).FindControl("ddlUsers"), DropDownList)

    Dim conStr As String = "Data Source=mydatasource"
    Dim cn As New SqlConnection(conStr)
    cn.Open()
    Dim updCmd As New SqlCommand("updateLeadership", cn)
    updCmd.CommandType = CommandType.StoredProcedure
    updCmd.Parameters.Add("@CustomerId", SqlDbType.Int).Value = ddl.SelectedValue.ToString()
    updCmd.Parameters.Add("@Position", SqlDbType.NVarChar).Value = ddl.SelectedItem.ToString()

    SqlDataSource1.DataBind()
    updCmd.Parameters.Clear()
    bindGridView()
End Sub

然后是gridview

<asp:GridView id="GridView1" runat="server" OnRowUpdating="GridView1_RowUpdating" DataSourceID="SqlDataSource1" DataKeyNames="Id">              
    <Columns>
        <asp:TemplateField>
            <HeaderStyle Width="5%" />
            <ItemStyle Width="5%" />
            <EditItemTemplate>
                <asp:LinkButton ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" />
                <asp:LinkButton ID="btnUpdate" Runat="server" CommandName="Update" OnClientClick="return confirm('Are you sure you're sure you want to update this position?');">Update</asp:LinkButton>      
            </EditItemTemplate>            
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton2" Runat="server" OnClientClick="return confirm('Are you sure you want to update this position?');"
                                CommandName="Edit">change</asp:LinkButton>                 
            </ItemTemplate>
        </asp:TemplateField>     
        <asp:TemplateField HeaderText="Position" >                
            <ItemTemplate>
                <asp:Label runat="server" ID="President" Text ='<%# Eval("Position")%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>            
        <asp:TemplateField HeaderText="Member Name" >
            <EditItemTemplate>
                <asp:dropdownlist id="ddlUsers" runat="server" DataSourceID="SqlDataSource2" AppendDataBoundItems="true" DataTextField="Name" DataValueField="CustomerId" AutoPostBack="true"></asp:dropdownlist>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label runat="server" ID="lblFirstVice" Text ='<%# Eval("FName") & " " & Eval("LName")%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>            
    </Columns>
    <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
    <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
    <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
</asp:GridView>         
<asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NCOAConnectionString %>" UpdateCommand="UpdateLeadership" UpdateCommandType="StoredProcedure">                   
    <UpdateParameters>
        <asp:controlparameter controlid="ddlUsers" propertyname="SelectedValue" Type="Int32" /> 
    </UpdateParameters>    
</asp:SqlDataSource>

<asp:SqlDataSource id="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NCOAConnectionString %>">
</asp:SqlDataSource>
4

0 回答 0