Tôi muốn sao chép cùng một chức năng của nút chỉnh sửa bằng cách sử dụng một cú nhấp chuột ở bất kỳ đâu trong hàng GridView.Nhấp vào bất kỳ nơi nào trên hàng GridView để vào chế độ chỉnh sửa
Đoạn mã dưới đây thực hiện việc này, nhưng với một vấn đề lớn: nếu người dùng nhấp vào một hộp văn bản sang hộp văn bản tiếp theo, lệnh chỉnh sửa sẽ kích hoạt lại và các thay đổi được thực hiện cho hộp văn bản trước đó sẽ trở lại giá trị ban đầu của nó .
Bất kỳ đề xuất nào về cách khắc phục hành vi này?
Hoặc, có cách tiếp cận tốt hơn để hoàn thành việc này không?
EDIT: Điều này đã được giải quyết bằng cách thêm séc cho row.RowState.HasFlag(DataControlRowState.Edit)
. Xem mã bên dưới:
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
foreach(GridViewRow row in gvwOrderItems.Rows)
{
if(row.RowType == DataControlRowType.DataRow &&
row.RowState.HasFlag(DataControlRowState.Edit) == false)
{
// enable click on row to enter edit mode
row.Attributes["onclick"] =
ClientScript.GetPostBackClientHyperlink(gvwOrderItems, "Edit$" + row.DataItemIndex, true);
}
}
base.Render(writer);
}
tôi đã thêm mã này để xử lý RowDataBound của tôi, và sau đó thay vì sử dụng row.DataItemIndex như tham số thứ 2, tôi đã sử dụng gv.DataKeys (e.Row.RowIndex) .Value sau đó tôi bắt sự kiện trong RowEditing sự kiện và e.NewEditIndex là ID của mục của tôi chứ không phải chỉ mục hàng. – yougotiger