使用Dropdownlist控件更新GridView

我正在使用VS2005 C#。

目前我有一个GridView,我已经将我的一个GridView控件更改为我的列名Gender ,从默认的TextBoxDropDownList ,我将控件的ID提供给GenderList ,它包含2个值, MF.

我有一个默认的更新语句,可以在edit后更新GridView,如下所示:

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString= "" UpdateCommand="UPDATE [UserMasterData] SET [Name] = @Name, [Age] = @Age, [ContactNo]=@ContactNo, [Address]=@Address, [Gender]=@Gender"/> 

上面的UPDATE查询工作正常,现在我已将Gender 文本框更改为下拉列表UPDATE查询给了我一个错误,上面写着:

Must declare the scalar variable "@Gender".

我假设UPDATE查询无法从我的Gender列中找到值。

我试图将UPDATE查询修改为@GenderList ,但它也不起作用。

任何人都知道我应该做什么UPDATE查询,以便我的UPDATE查询可以在我的Gender列中的GenderList下拉列表中找到值?

谢谢。


以下是我以前的Gender列,其中包含文本框控件:

   

以下是我的Gender与下拉列表控件:

     M F    

编辑:

尝试实现RowDatBoundonRowUpdating


RowDatBound


 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { DataRowView dRowView = (DataRowView)e.Row.DataItem; if (e.Row.RowType == DataControlRowType.DataRow) { if ((e.Row.RowState & DataControlRowState.Edit) > 0) { DropDownList genderList= (DropDownList)e.Row.FindControl("GenderList"); genderList.SelectedValue = dRowView[2].ToString(); } } } 

RowUpdating .aspx.cs


 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { DropDownList genderSelect =(DropDownList)GridView1.Rows[e.RowIndex].FindControl("GenderList"); SqlDataSource1.UpdateParameters["Gender"].DefaultValue = genderSelect.SelectedValue; --> error says not set to an instance of an object } 

如果您正在使用SqlDataSource并通过它更新数据,那么您所要做的就是为下拉列表GenderList设置双向绑定。

您可以通过设计人员或直接在源代码中进行设置

    M F   

注意这里正在使用双向绑定。

您需要使用其选定的值属性,下拉列表是值的集合,但您要为更新语句指定标量值。 您必须检查何时处于更新模式,您需要获取下拉列表的选定项值并将该值用作更新语句的参数。
使用gridview中的Dropdownlist进行编辑

检查其处于编辑模式或不在RowDataBound事件中使用这样

 if ((e.Row.RowState & DataControlRowState.Edit) > 0)