แม้ว่า ASP.NET DataGrid จะเป็นที่รู้จักกันดีว่าเป็นตัวควบคุมตารางที่ดีมาก แต่เราไม่สามารถยกย่องฟังก์ชันการแก้ไขของ DataGrid ได้ ยกตัวอย่างฟังก์ชันการส่งข้อมูลของ DataGrid มีปัญหาใหญ่แน่นอน: ใน DataGrid ทุก ๆ วิธีในการแก้ไขหนึ่งบรรทัด คุณต้องส่งหนึ่งบรรทัดซึ่งเรียกว่า "การแก้ไขบรรทัดเดียวการส่งบรรทัดเดียว" ในกรณีนี้หากมีการแก้ไขบรรทัดมากเกินไปการดำเนินการของผู้ใช้ไม่เพียงแต่จะยุ่งยากเท่านั้น แต่ยังทำให้เข้าถึงบ่อยครั้งอีกด้วย ไปยังเซิร์ฟเวอร์ ทำให้ประสิทธิภาพของระบบลดลงอย่างมาก
แน่นอนว่ามีวิธีแก้ไขที่ฟื้นคืนชีพขึ้นมาใหม่ นั่นคือการถ่ายโอนเนื้อหาที่จะแก้ไขไปยังหน้าอื่นและแก้ไขในกล่องข้อความ อย่างไรก็ตาม หากคุณลองคิดดูดีๆ วิธีนี้จะไม่หลอกตัวเองใช่หรือไม่ นอกจากนี้ เมื่อเราแก้ไขใน Grid เราจะไม่สามารถใช้ปุ่ม Tab เพื่อข้ามไปมาระหว่าง Grid (กล่องข้อความ) ได้เสมอไป หากจำเป็นต้องมีการตอบกลับ โปรแกรมเมอร์ต้องสิ้นเปลืองพลังงานในการพัฒนาอย่างมาก
จะแก้ไขปัญหาข้างต้นได้อย่างไร? ตอนนี้ฉันขอแนะนำให้คุณใช้ DataGrid ในประเทศที่ฉันใช้: SmartGrid (สามารถดาวน์โหลดได้จาก Sky Software Station: http://www.skycn.com/soft/23547.html ) ฉันใช้การควบคุมนี้มาเป็นเวลานาน ตอนนี้เรามาพูดถึงวิธีการส่งแบบหลายแถวของ SmartGrid: SmartGrid ไม่มีคอลัมน์ปุ่มใน DataGrid แต่ทั้งแบบฟอร์มจะมีปุ่มส่งเพียงปุ่มเดียวเท่านั้น ดังต่อไปนี้ มาดูตัวอย่างกัน
ตัวอย่าง:
รูปภาพด้านบนเป็นตัวอย่างการแก้ไขที่ดีกว่า ตัวอย่างแสดงว่าคุณสามารถแก้ไขหลายบรรทัดหรือหนึ่งบรรทัด แล้วส่งพร้อมกัน
รหัส:
แก้ไขรหัสปุ่ม:
โมฆะส่วนตัว btonSave_Click (ผู้ส่งวัตถุ System.EventArgs e)
{
this.DataGrid1.ReadOnly = false;//ป้อนการแก้ไข
this.DataGrid1.AllowAdd = true;//อนุญาตให้เพิ่ม
this.DataGrid1.AllowDelete = true; //อนุญาตให้ลบ
}
รหัสนี้เป็นคุณลักษณะเฉพาะของ smartgrid คุณสามารถตั้งค่าฟังก์ชันต่างๆ ในการเพิ่ม ลบ แก้ไข
และบันทึกโค้ดของปุ่มได้:
วัตถุ
System.EventArgs e)
{
DataTable t = (DataTable) this.SmartGrid1.DataSource;
this.sqlDataAdapter1.Update(t)
;
this.sqlDataAdapter1.Fill(t);
.SmartGrid1.DataSource = t;
}
เป็นการส่งข้อมูลไปยังฐานข้อมูลโดยรวม วิธีการนี้เหมาะสำหรับข้อมูลจำนวนมาก
นอกจากนี้ยังมีวิธีการส่งข้อมูลไปยังรหัสเซิร์ฟเวอร์
ทีละบรรทัด:
ส่วนตัวเป็นโมฆะ btonSave_Click (ผู้ส่งวัตถุ System.EventArgs e)
{
DataTable
tb=(DataTable)this.SmartGrid1.DataSource;
SqlParameter[] พารามิเตอร์=new SqlParameter[5
]
; SqlParameter("@customerId", ""+dr[1]+"");
พารามิเตอร์[1]=new SqlParameter("@companyName",""+dr[0]+"");
พารามิเตอร์[2]=new SqlParameter("@contactName", ""+dr[2]+"");
พารามิเตอร์[3]=new SqlParameter("@contactTitle",""+dr[3]+"");
พารามิเตอร์[4]=new SqlParameter("@address", ""+dr[4]+"");
//
EamPd เป็นฟังก์ชันสำหรับดำเนินการขั้นตอนที่เก็บไว้
",พารามิเตอร์);
}
}