我有一个具有编辑功能的gridiview。当用户单击“编辑”按钮时,网格的行数据将发布到表单中进行编辑。然后,用户必须按下“提交”按钮以再次将数据添加到网格中。
我想在编辑后将数据发布到网格的同一行,但是我不知道该怎么做,即如果第三行数据被编辑,则在添加按钮上单击,则编辑后的数据应提交到第三行
<div class="form-group">
<label>NAME</label><span class="required">*</span>
<input type="text" class="form-control" maxlength="200" runat="server" id="txtName" autocomplete="off" />
</div>
<div class="form-group">
<label>GENDER</label><span class="required">*</span>
<select class="form-control" id="selectGender" runat="server" style="height: 34px;">
<option value="0">M</option>
<option value="1">F</option>
<option value="2">U</option>
</select>
</div>
<div class="form-group">
<div class="col-md-4">
<asp:Button ID="btnAddFamMem" runat="server" Text="ADD" />
</div>
</div>
<asp:GridView ID="famGrid"
runat="server"
AutoGenerateColumns="false"
Width="100%"
OnSelectedIndexChanged="famGrid_SelectedIndexChanged">
<Columns>
<asp:TemplateField HeaderText="S No." ItemStyle-Width="3%">
<ItemTemplate>
<%#Container.DataItemIndex+1 %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField
HeaderText="NAME" DataField="Name">
<ItemStyle VerticalAlign="Top" />
</asp:BoundField>
<asp:BoundField
HeaderText="GENDER" DataField="Gender">
<ItemStyle VerticalAlign="Top" />
</asp:BoundField>
<asp:CommandField ShowSelectButton="true" SelectText="EDIT" HeaderText="EDIT" ButtonType="Button" />
</Columns>
</asp:GridView>
逻辑背后的代码
protected void famGrid_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow gvr = famGrid.SelectedRow;
selectGender.Value = gvr.Cells[1].Text == " " ? null : gvr.Cells[1].Text;
selectGender.SelectedIndex = 0;
}
protected void btnAddFamMem_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtName.Value.Trim()))
{
DataTable dt = (DataTable)ViewState["FamilyTable"];
DataRow dr = dt.NewRow();
dr["Name"] = txtName.Value.Trim();
dr["Gender"] = selectGender.Items[selectGender.SelectedIndex].Text;
dt.Rows.Add(dr);
BindFamilyGrid();
}
}
假设我的网格数据是::
NAME GENDER
TSHERIG M
TONGBA F
PASNG M
因此,当我编辑第二行数据时,我想再次将编辑后的数据保存到同一行。现在,我将最后添加编辑后的数据。我该怎么办?