【发布时间】:2011-12-06 07:17:47
【问题描述】:
我正在使用 VS2005 C#。
目前我有一个 GridView,并且我已将我的 GridView 控件之一更改为我的列名Gender,从默认的TextBox 更改为DropDownList,我将控件的ID 设置为@ 987654327@,它包含2个值,M和F。
我有一个默认的更新语句,它能够在edit 之后更新 GridView,如下所示:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=
"<%$ ConnectionStrings:SODConnectionString %>" UpdateCommand="UPDATE
[UserMasterData] SET [Name] = @Name, [Age] = @Age, [ContactNo]=@ContactNo,
[Address]=@Address, [Gender]=@Gender"/>
上面的 UPDATE 查询完美运行,现在我已将我的 Gender textbox 更改为 dropdownlist,UPDATE 查询给了我一个错误,上面写着:
Must declare the scalar variable "@Gender".
我假设 UPDATE 查询无法从我的 Gender 列中找到值。
我尝试将 UPDATE 查询修改为 @GenderList,但效果不佳。
任何人都知道我应该做什么来执行 UPDATE 查询,以便我的 UPDATE 查询可以从我的 GenderList 下拉列表中的 Gender 列中找到值?
谢谢。
下面是我之前的Gender 列,带有一个文本框控件:
<asp:BoundField HeaderText="Gender"
DataField="Gender"
SortExpression="Gender"></asp:BoundField>
下面是我的Gender,带有下拉列表控件:
<asp:TemplateField HeaderText="Gender" SortExpression="Gender" >
<EditItemTemplate>
<asp:DropDownList ID="GenderList" runat="server" Width="50px" >
<asp:ListItem>M</asp:ListItem>
<asp:ListItem>F</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
编辑:
尝试实现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
}
【问题讨论】:
-
stackoverflow.com/questions/8395365/… 同样的问题还有一个新的ACC ???不要用新线程问同样的问题,即使是你的同一个用户stackoverflow.com/users/872370/ruihao
-
请不要创建新帐户并再次提出相同的问题。另外,请不要在你的问题前面加上“asp.net”。无需在标题中添加标签;我们有一个运行良好的标签系统!