GridView批次新增、批次修改,怎麼做?

MIS2000 Lab.
4 min readMay 3, 2020

--

老文新貼,FAQ — -GridView批次新增、批次修改,怎麼做?

源自MSDN的範例,超讚!

逐步解說:對繫結至 GridView Web 伺服器控制項的資料列執行大量更新
http://msdn.microsoft.com/zh-tw/library/aa992036%28v=vs.100%29.aspx

==============================

1. 首先,要把 GridView + SqlDataSource的精靈步驟完成。

2. 接著,把 GridView呈現資料的 <ItemTemplate>改成 TextBox(並且完成繫結、DataBinding),

讓用戶第一次看見畫面,就能修改每一個欄位。

3. 真正的「批次刪除」、「批次修改」的 Button按鈕,寫在 GridView外面

Button的程式碼如下

完整的HTML設計畫面、後置程式碼,微軟的範例都提供了。

privatebool tableCopied = false;
private System.Data.DataTable originalDataTable;
protectedvoid GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
if (!tableCopied)
{
originalDataTable = ((System.Data.DataRowView)e.Row.DataItem).Row.Table.Copy();
ViewState["originalValuesDataTable"] = originalDataTable;
tableCopied = true;
}
}
protected void UpdateButton_Click(object sender, EventArgs e)
{
originalDataTable = (System.Data.DataTable)ViewState["originalValuesDataTable"];
foreach (GridViewRow r in GridView1.Rows)
if (IsRowModified(r)) { GridView1.UpdateRow(r.RowIndex, false); }

// 程式裡面,還有一個重點,

就是 GridView的 .UpdateRow()方法

http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.gridview.updaterow%28v=VS.100%29.aspx

我們要在這個方法加入的參數,有兩個,

分別是「要修改的那一列的索引(RowIndex)」與「是否進行驗證?(預設值為 false)」

// Rebind the Grid to repopulate the original values table.
tableCopied = false;
GridView1.DataBind();
}
protected bool IsRowModified(GridViewRow r)
{
int currentID;
string currentLastName;
string currentFirstName;
currentID = Convert.ToInt32(GridView1.DataKeys[r.RowIndex].Value); currentLastName = ((TextBox)r.FindControl("LastNameTextBox")).Text;
currentFirstName = ((TextBox)r.FindControl("FirstNameTextBox")).Text;
System.Data.DataRow row = originalDataTable.Select(String.Format("EmployeeID = {0}", currentID))[0]; if (!currentLastName.Equals(row["LastName"].ToString())) { return true; }
if (!currentFirstName.Equals(row["FirstName"].ToString())) { return true; }
return false;
}

VB版範例在此:http://msdn.microsoft.com/zh-tw/library/aa992036%28v=vs.100%29.aspx#Y6840

--

--

MIS2000 Lab.
MIS2000 Lab.

Written by MIS2000 Lab.

ASP.NET 線上教學 / 線上教程 — .Net Core MVC + WebAPI 與 Web Form。ASP.NET專題實務。免費試聽4~5小時,請來信索取 mis2000lab(at)yahoo. com. tw 或 school(at)mis2000lab. net 謝謝

No responses yet