Я использую VS2005 C #.
В настоящее время у меня есть GridView, и я изменил один из элементов управления GridView на имя моего столбца Gender
со значения по умолчанию TextBox
на DropDownList
, которое я присвоил ID
элемента управления GenderList
и содержит 2 значения: M и F .
У меня есть оператор обновления по умолчанию, который может обновлять GridView после edit
, а именно:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=
"<%$ ConnectionStrings:SODConnectionString %>" UpdateCommand="UPDATE
[UserMasterData] SET [Name] = @Name, [Age] = @Age, [ContactNo]=@ContactNo,
[Address]=@Address, [Gender]=@Gender"/>
Вышеупомянутый запрос ОБНОВЛЕНИЯ работает отлично, и теперь я изменил свое Gender
текстовое поле на выпадающий список , запрос 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>
EDIT:
Попробовал реализацию 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
}