首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

GridView 編輯模式下高效獲取單元格值:ExtractValuesFromCell 方法詳解

     編輯:關於ASP.NET

在 ASP.NET Web Forms 開發中,處理 GridView 編輯模式下的數據提取一直是開發者常遇到的場景。許多開發者仍習慣使用 FindControl 方法在單元格中查找控件並獲取值,例如:

var txtName = grid1.Rows[e.RowIndex].Cells[0].FindControl("txtName") as TextBox;
if (txtName != null)
{
    // 讀取值
}

其實,ASP.NET 已經將這套「查找控件並提取值」的邏輯封裝在 ExtractValuesFromCell 方法中,並被多種列類型支援,包括 DataControlField、BoundField、AutoGeneratedField、CheckBoxField、ImageField、TemplateField、DynamicField 等。你可以在 RowUpdating、RowDeleting 等事件中直接調用它,將值提取到 e.Keys、e.NewValues、e.OldValues 等字典中,隨後再從字典讀取,極大簡化代碼。

實戰範例:RowUpdating 事件中提取主鍵與更新值

protected void grid1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    var row = grid1.Rows[e.RowIndex];

    // 提取主鍵 Id(第 0 列)
    grid1.Columns[0].ExtractValuesFromCell(
        e.Keys,
        row.Cells[0] as DataControlFieldCell,
        DataControlRowState.Edit,
        true /* include readonly */);

    // 提取 Name 欄位(第 1 列)
    grid1.Columns[1].ExtractValuesFromCell(
        e.NewValues,
        row.Cells[1] as DataControlFieldCell,
        DataControlRowState.Edit,
        true /* include readonly */);

    var id = int.Parse(e.Keys["id"].ToString());
    var name = (string)e.NewValues["name"];

    // 執行資料庫更新操作
    // ...
}

優勢總結

  • 減少樣板代碼:無需手寫 FindControl、類型轉換、空值判斷。
  • 統一處理各類欄位:BoundField、TemplateField 等均適用,尤其適合大量使用 BoundField 的場景。
  • 自動處理只讀欄位:第四個參數 includeReadOnly 可控制是否包含唯讀欄位值。

掌握 ExtractValuesFromCell,能讓 GridView 編輯邏輯更乾淨、可維護性更強,是每位 ASP.NET 開發者應掌握的進階技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved