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

閱讀時間約 5 分鐘
老文新貼,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()方法
我們要在這個方法加入的參數,有兩個,
分別是「要修改的那一列的索引(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;
}
為什麼會看到廣告
    4會員
    120內容數
    留言0
    查看全部
    發表第一個留言支持創作者!
    兩千MIS的沙龍 的其他內容
    日前頗受大家矚目的事件,學校老師拿現成考卷上場 相關文章: 第一篇,從2012年就開始囉 這就是我們的學校教出來的 [程式設計]…..Orz 兼論 [教學]與 [良心] 2014年還有學生在問這份考卷的答案…. 這份ASP.NET考卷我也考不到一百分(甚至九十分) 今天偶而在 IT邦幫忙的鐵人賽
    接下來,要講的是微軟公司了,大名鼎鼎的 Microsoft。 台灣微軟! 我敢指名道姓,表示這是一個很不錯的面試經驗。 原本是獵人頭公司幫我介紹的工作。 說真的,跟我當初期望差很多,但因為公司很知名,我還是準時前往。 天啊!真是厲害! 但兩次的面試經驗,都讓我對微軟這家公司留下了很好的印象。
    說到面試,往往是第二關了。 通常一開始都會有電話、或是E-Mail通知我們。 為了避免浪費彼此的寶貴時間,最好在電話裡面(或是主動撥電話)去問個清楚。 例如:接到電話或是E-Mail後,我會直接跟對方聯絡、或是請教對方(當然語氣要很和緩、有禮貌) 靠!我聽到這裡,已經一肚子火。 我話都還沒講完呢!
    早上開會我突然察覺一件事:因為我有兩份工作(收入),所以我可以有比較高尚 “一點點” 的人格😔 大家都知道武漢肺炎的疫情,對產業造成重大影響,當然台灣公司一定會使出「扣司當」大法、精簡人力。 在組織中,沒有實質產出的人是誰呢?當然是各階層的 “主管”。尤其是沒技術能力的主管……
    [職場文] 今天發現一個現象,有點後知後覺。 在大公司裡面,總有少數人,他在 "各部門"之間跑來跑去(轉調單位),全公司的老人都認識他,他也清楚每個部門的細節,但是....... 他就是每一個部門都呆不久, 更有趣的是:一個專案都沒完成過(待在同一地方的時間太短,又落跑了),也從來不升官。 :-P
    ASP.NET Core 3.1 — FileUpload 檔案上傳 + NPOI 我把以前NPOI的範例改成 .NET Core版,但在檔案上傳(FileUpload)上遇見一點問題。 ASP.NET Core .31 — FileUpload 檔案上傳跟 .NET完整版(MVC 5)有點不同
    日前頗受大家矚目的事件,學校老師拿現成考卷上場 相關文章: 第一篇,從2012年就開始囉 這就是我們的學校教出來的 [程式設計]…..Orz 兼論 [教學]與 [良心] 2014年還有學生在問這份考卷的答案…. 這份ASP.NET考卷我也考不到一百分(甚至九十分) 今天偶而在 IT邦幫忙的鐵人賽
    接下來,要講的是微軟公司了,大名鼎鼎的 Microsoft。 台灣微軟! 我敢指名道姓,表示這是一個很不錯的面試經驗。 原本是獵人頭公司幫我介紹的工作。 說真的,跟我當初期望差很多,但因為公司很知名,我還是準時前往。 天啊!真是厲害! 但兩次的面試經驗,都讓我對微軟這家公司留下了很好的印象。
    說到面試,往往是第二關了。 通常一開始都會有電話、或是E-Mail通知我們。 為了避免浪費彼此的寶貴時間,最好在電話裡面(或是主動撥電話)去問個清楚。 例如:接到電話或是E-Mail後,我會直接跟對方聯絡、或是請教對方(當然語氣要很和緩、有禮貌) 靠!我聽到這裡,已經一肚子火。 我話都還沒講完呢!
    早上開會我突然察覺一件事:因為我有兩份工作(收入),所以我可以有比較高尚 “一點點” 的人格😔 大家都知道武漢肺炎的疫情,對產業造成重大影響,當然台灣公司一定會使出「扣司當」大法、精簡人力。 在組織中,沒有實質產出的人是誰呢?當然是各階層的 “主管”。尤其是沒技術能力的主管……
    [職場文] 今天發現一個現象,有點後知後覺。 在大公司裡面,總有少數人,他在 "各部門"之間跑來跑去(轉調單位),全公司的老人都認識他,他也清楚每個部門的細節,但是....... 他就是每一個部門都呆不久, 更有趣的是:一個專案都沒完成過(待在同一地方的時間太短,又落跑了),也從來不升官。 :-P
    ASP.NET Core 3.1 — FileUpload 檔案上傳 + NPOI 我把以前NPOI的範例改成 .NET Core版,但在檔案上傳(FileUpload)上遇見一點問題。 ASP.NET Core .31 — FileUpload 檔案上傳跟 .NET完整版(MVC 5)有點不同
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~