使用Dropdownlist控件更新GridView
我正在使用VS2005 C#。
目前我有一个GridView,我已经将我的一个GridView控件更改为我的列名Gender
,从默认的TextBox
到DropDownList
,我将控件的ID
提供给GenderList
,它包含2个值, M和F.
我有一个默认的更新语句,可以在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
编辑:
尝试实现RowDatBound
和onRowUpdating
:
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)