程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 如何獲取GridView編輯狀態下單元格裡的值?

如何獲取GridView編輯狀態下單元格裡的值?

編輯:關於ASP.NET

還在使用這樣的代碼嗎?

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

其實這些工作(在單元格中查找控件,並嘗試獲取其中的值)已經被封裝了 。現在,只要調用 ExtractValuesFromCell 方法即可。

而該方法也被很多種列類型所支持:

DataControlField, BoundField, AutoGeneratedField, CheckBoxField, ImageField, TemplateField, DynamicField

你可以在 GridView 的 RowUpdating, RowDeleting 等事件中使用它。利用 該方法,可以將值提取到所需的字典裡去,然後再從字典中讀取。這些字典包括 :e.Keys, e.NewValues, e.OldValues 等。

一小段例子代碼:

// 更新
protected void grid1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
var row = grid1.Rows[e.RowIndex];
// 提取 Id 字段的值
grid1.Columns[0].ExtractValuesFromCell(
e.Keys,
row.Cells[0] as DataControlFieldCell,
DataControlRowState.Edit,
true /* include readonly */);
// 提取 Name 字段的值
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"];
// 執行相關的數據庫更新操作
//
}

這樣,在大多數場合我們可以盡可能多的使用 BoundField,並且也能正確讀 取到其編輯時的值,省下自定義 TemplateField 的一堆代碼了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved