หากต้องการแก้ไขข้อมูลในตัวควบคุม DataGrid โปรดใช้คอลัมน์ "แก้ไข อัปเดต ยกเลิก" ใน "คอลัมน์ปุ่ม" สิ่งเหล่านี้สามารถตั้งค่าเป็นตัวควบคุม DataGrid ในตัวสร้างคุณสมบัติของตัว
ควบคุม DataGrid (ใช้ชื่อตัวควบคุม dg1 เป็น ตัวอย่าง ) จะมีอีกหนึ่งคอลัมน์ในตัวควบคุม dg1 บนเพจ แต่ละรายการในคอลัมน์นี้คือ LinkButton/Button พร้อมข้อความ "แก้ไข"
หากคุณคลิกปุ่ม "แก้ไข" ของแถว แถวนั้นจะอยู่ในโหมดแก้ไข ปุ่ม "แก้ไข" จะถูกแทนที่ด้วยปุ่ม "อัปเดต" และ "ยกเลิก" และคอลัมน์ตัวช่วยข้อมูลอื่นๆ ที่ไม่ใช่แบบอ่านอย่างเดียวทั้งหมดใน แถวจะถูกเปลี่ยนเป็นรูปแบบการควบคุมกล่องข้อความเพื่อให้ผู้ใช้สามารถแก้ไขและแก้ไขได้
เมื่อผู้ใช้แก้ไขข้อมูลของคอลัมน์ข้อมูลที่ไม่ใช่แบบอ่านอย่างเดียว (ในตัวควบคุมกล่องข้อความ) ให้คลิกปุ่ม "อัปเดต" บันทึกค่าใหม่ (โดยปกติจะเป็นฐานข้อมูล) คลิกปุ่ม "ยกเลิก" แถวออก โหมดแก้ไข
เพื่อให้บรรลุผลของการเปลี่ยนไปใช้โหมดแก้ไขแถวโดยการคลิกปุ่ม "แก้ไข" จะต้องเขียนวิธีการจัดการเหตุการณ์ EditCommand ของ dg1 เพื่อให้บรรลุผลจากการบันทึกค่าใหม่โดยการคลิกปุ่ม "อัปเดต" ต้องเขียนวิธีการจัดการเหตุการณ์ UpdateCommand ของ dg1 หากต้องการคลิกปุ่ม "ยกเลิก" เพื่อออกจากโหมดแก้ไขบรรทัด คุณต้องแก้ไขวิธีการจัดการเหตุการณ์ CancelCommand ของ dg1
1) วิธีการจัดการเหตุการณ์ dg1.EditCommand - เข้าสู่การแก้ไขบรรทัด โหมด
-------------------------------------------------- -------------------------------------------------- ----
โมฆะส่วนตัว dg1_EditCommand (แหล่งวัตถุ, System.Web.UI.WebControls.DataGridCommandEventArgs e)
-
dg1.EditItemIndex = e.Item.ItemIndex; //ตั้งค่าดัชนีของรายการที่จะแก้ไข
binddg1(); //วิธีการผูกข้อมูลกับ dg1. หลังจากตั้งค่ารายการที่จะแก้ไขแล้ว จำเป็นต้องมีการเชื่อมโยง dg1 ใหม่
-
-------------------------------------------------- -------------------------------------------------- -------
2) วิธีการจัดการเหตุการณ์ dg1.CancelCommand - ออกจากโหมดแก้ไขแถว
-------------------------------------------------- -------------------------------------------------- -------
โมฆะส่วนตัว dg_CancelCommand (แหล่งวัตถุ System.Web.UI.WebControls.DataGridCommandEventArgs e)
-
dg1.EditItemIndex = e.Item.ItemIndex; //ดัชนีของรายการที่แก้ไขคือ -1 ซึ่งหมายความว่าไม่มีการแก้ไขรายการ
binddg1(); //หลังจากรีเซ็ต EditItemIndex แล้ว จำเป็นต้องรวม dg1 ใหม่
-
-------------------------------------------------- -------------------------------------------------- -------
3) วิธีการจัดการเหตุการณ์ dg1.UpdateCommand - บันทึกค่าที่อัปเดต คุณต้องรับค่าใหม่เหล่านี้จากเพจก่อน ในวิธีการประมวลผลเหตุการณ์ จะต้องใช้งานฟังก์ชันหลักสามประการ:
รับค่าที่อัปเดต อัปเดตค่าเหล่านั้น และออกจากโหมดอัปเดตแถว
โดยทั่วไป ข้อมูลที่แสดงในตัวควบคุม DataGrid จะได้รับจากตารางฐานข้อมูล ดังนั้นค่าที่อัปเดตจะต้องถูกบันทึกลงในฐานข้อมูลด้วย คุณสามารถใช้คำสั่ง update Sql หรือขั้นตอนการจัดเก็บเพื่อดำเนินการอัปเดตได้
การรับค่าของคอลัมน์จากเพจในแถวในโหมดแก้ไขต้องใช้เทคนิคบางอย่าง ใช้คอลัมน์ที่มีผลผูกพันเป็นตัวอย่าง:
รับค่าของคอลัมน์ที่ถูกผูกไว้แบบอ่านอย่างเดียว: e.Item.Cells[ดัชนีคอลัมน์].ข้อความ //คอลัมน์วิธีใช้แบบอ่านอย่างเดียวอยู่ในสถานะที่ไม่สามารถแก้ไขได้ รับค่าของคอลัมน์ที่ถูกผูกไว้แบบไม่อ่านอย่างเดียว: ((TextBox)(e.Item. Cells[Column Index].Controls[0])).ข้อความ //ในสถานะการแก้ไข
คอลัมน์วิธีใช้แบบอ่านอย่างเดียวมักจะเป็นคอลัมน์คีย์หลักในตาราง ใช้ในส่วนของคำสั่ง update โดยทั่วไปจะไม่มีการอัพเดต
ตัวอย่างโค้ด:
-------------------------------------------------- -------------------------------------------------- --------
โมฆะส่วนตัว DataGrid1_UpdateCommand (แหล่งวัตถุ, System.Web.UI.WebControls.DataGridCommandEventArgs e)
-
//คอลัมน์ที่ถูกผูกไว้แบบอ่านอย่างเดียว อยู่ในสถานะไม่สามารถแก้ไขได้
string customerid = e.Item.Cells[1].Text;
//คอลัมน์ที่ถูกผูกไว้แบบไม่อ่านอย่างเดียว อยู่ในสถานะแก้ไข
ชื่อบริษัทสตริง = ((กล่องข้อความ)(e.Item.Cells[2].Controls[0])).ข้อความ;
string city = ((TextBox)(e.Item.Cells[3].Controls[0])).Text;
String strSql = "อัปเดตลูกค้าตั้งค่าชื่อบริษัท = '" + ชื่อบริษัท +
"',เมือง = '" + เมือง + "' โดยที่รหัสลูกค้า = '" + รหัสลูกค้า + "'";
ExecuteSql(strSql); //ดำเนินการคำสั่งอัพเดตเพื่ออัพเดต
DataGrid1.EditItemIndex = -1; //ออกจากโหมดแก้ไขแถว
binddg1();
-