我有一个网格视图如下, GridView
当焦点转移到下一行时,我想根据文本框中输入的文本更新表格。我怎样才能做到这一点?
我已经完成了页面索引更改中的编码,我对Web编程有点困惑,如何在ASP中使用C#实现这一点。
下面是我为页面索引更改而编写的代码..
ASP
<asp:GridView ID="GVItems" runat="server"
CssClass="table table-hover table-striped table-bordered" GridLines="None"
AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" OnPageIndexChanging="GVItems_PageIndexChanging" OnRowEditing="GVItems_RowEditing" OnSelectedIndexChanging="GVItems_SelectedIndexChanging">
<AlternatingRowStyle BackColor="#CCCCCC" BorderStyle="None" />
<Columns>
<asp:BoundField DataField="UNIQ" HeaderText="UNIQ" />
<asp:BoundField DataField="store" HeaderText="STORE" />
<asp:BoundField DataField="MQty" HeaderText="Modified Qty" />
<asp:TemplateField HeaderText="Edit MQty" >
<ItemTemplate >
<asp:TextBox ID="txtUpdatedQty" runat="server" Text="" Width="40" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyle CssClass="cursor-pointer" />
<PagerStyle HorizontalAlign="Right" CssClass="pagination-ys" />
</asp:GridView>
C#
protected void GVItems_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
UpdateRecvQty();
GVItems.PageIndex = e.NewPageIndex;
this.BindGrid();
}
private void UpdateRecvQty()
{
foreach (GridViewRow row in GVItems.Rows)
{
if (((TextBox)row.FindControl("txtUpdatedQty")).Text != "")
{
uniqID = row.Cells[0].Text;
qty = ((TextBox)row.FindControl("txtUpdatedQty")).Text;
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
con.Open();
string query = "UPDATE [dbo].[Tbl_Order] SET MQty = @qty where UNIQU=@uniqID";
cmd.CommandText = query;
cmd.Parameters.AddWithValue("@qty", qty);
cmd.Parameters.AddWithValue("@uniqID", uniqID);
cmd.ExecuteNonQuery();
}
}
}
答案 0 :(得分:0)
为什么不使用文本框的textChanged事件并在每次用户编辑文本框时更新值而不是在结尾处循环?