ภายใต้ asp.net 2.0 นั้น gridview สะดวกมาก หากคุณเพิ่มชุดควบคุม DATASOURCE คุณสามารถผูกเข้ากับ gridview ได้ทันทีซึ่งสะดวกมาก แต่ในความเป็นจริง คุณยังสามารถใช้ datatable หรือ dataview ได้ด้วย ในขณะนี้ คุณจะไม่ใช้ตัวควบคุมชุดแหล่งข้อมูล เรามาพูดถึงวิธีการเปลี่ยนหน้าและการเรียงลำดับของแต่ละคอลัมน์ในตัวควบคุม gridview ภายใต้ asp.net 2.0
ฟังก์ชั่นการแก้ไข
อันดับแรก เราอ่านตารางพนักงานในฐานข้อมูลนอร์ธวินด์ หลังจากวาง gridview แล้ว ให้เพิ่มคอลัมน์ที่ถูกผูกไว้หลายคอลัมน์ โค้ดจะเป็นดังนี้
<asp:GridView ID = "GridView1" runat = "เซิร์ฟเวอร์" AllowPaging = "True" AllowSorting = "True"
AutoGenerateColumns = "False" CellPadding = "4" ForeColor = "#333333" GridLines = "ไม่มี"
width = "100%" DataKeyNames = "EmployeeID" OnPageIndexChanging = "GridView1_PageIndexChanging" OnRowEditing = "GridView1_RowEditing" OnRowUpdating = "GridView1_RowUpdating" OnSorting = "GridView1_Sorting" PageSize = "3" OnRowCancelingEdit = "GridView1_RowCancelingEdit" OnRowCommand = "G กำจัด View1_RowCommand">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="สีขาว" />
<คอลัมน์>
<asp:BoundField DataField = "employeeid" HeaderText = "รหัสพนักงาน" อ่านอย่างเดียว = "จริง" />
<asp:BoundField DataField = "ชื่อ" HeaderText = "ชื่อ" SortExpression = "ชื่อ" />
<asp:BoundField DataField = "นามสกุล" HeaderText = "นามสกุล" SortExpression = "นามสกุล" />
<asp:CommandField ShowEditButton = "จริง" />
</คอลัมน์>
<RowStyle BackColor="#FFFFD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="น้ำเงิน" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333"HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="สีขาว" />
<AlternatingRowStyle BackColor="สีขาว" />
</asp:GridView>
ก่อนอื่น เราจำเป็นต้องดำเนินการเพจ ตั้งค่า AllowPaging เป็นจริง และตั้งค่าจำนวนรายการเพจต่อหน้า และสุดท้ายเขียนในโค้ดด้านหลัง
ป้องกันโมฆะ GridView1_PageIndexChanging (ผู้ส่งวัตถุ GridViewPageEventArgs e)
-
GridView1.PageIndex = e.NewPageIndex;
BindGrid();
-
เพื่อให้บรรลุการเรียงลำดับการคลิกอัตโนมัติของแต่ละคอลัมน์ คุณสามารถตั้งค่า Alloworting=true จากนั้นตั้งค่า OnSorting="GridView1_Sorting" โดยที่ gridview_sorting
รหัสคือ
ป้องกันโมฆะ GridView1_Sorting (ผู้ส่งวัตถุ GridViewSortEventArgs e)
-
ViewState["sortexpression"] = e.SortExpression;
if (ViewState["sortdirection"] == null)
-
ViewState["sortdirection"] = "asc";
-
อื่น
-
ถ้า (ViewState["sortdirection"].ToString() == "asc")
-
ViewState["sortdirection"] = "คำอธิบาย";
-
อื่น
-
ViewState["sortdirection"] = "asc";
-
-
BindGrid();
-
แน่นอนว่าการตั้งมุมมองให้บันทึกลำดับการเรียงลำดับแต่ละอย่าง ผมเชื่อว่าข้างต้นนี้เข้าใจได้ง่าย
ในที่สุด ฟังก์ชันการแก้ไขก็ถูกนำมาใช้ เนื่องจากมีการตั้งค่า OnRowEditing="GridView1_RowEditing" ในหน้า aspx และโค้ดของ GridView1_RowEditing คือ
ป้องกันเป็นโมฆะ GridView1_RowUpdating (ผู้ส่งวัตถุ GridViewUpdateEventArgs e)
-
int empid;
สตริง fname, lname;
empid = int.Parse(GridView1.Rows[e.RowIndex].เซลล์[0].ข้อความ);
fname = ((กล่องข้อความ)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).ข้อความ;
lname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
SqlConnection cnn = new SqlConnection(@"data source=localhost;initial Catalog=northwind;user id=sa ;รหัสผ่าน=123456");
cnn.เปิด();
SqlCommand cmd = new SqlCommand("update Employee set firstname=@fname,lastname=@lname Employeewhereid=@empid ", cnn);
cmd.Parameters.Add(new SqlParameter("@fname",fname));
cmd.Parameters.Add(new SqlParameter("@lname", lname));
cmd.Parameters.Add(new SqlParameter("@empid", empid));
cmd.ExecuteNonQuery();
cnn.Close();
GridView1.EditIndex = -1;
BindGrid();
-
ป้องกันเป็นโมฆะ GridView1_RowEditing (ผู้ส่งวัตถุ GridViewEditEventArgs e)
-
GridView1.EditIndex = e.NewEditIndex;
BindGrid();
-
ป้องกันโมฆะ GridView1_RowCancelingEdit (ผู้ส่งวัตถุ GridViewCancelEditEventArgs e)
-
GridView1.EditIndex = -1;
BindGrid();
}
อย่างที่คุณเห็น จริงๆ แล้วโค้ดด้านบนนั้นเหมือนกับเวอร์ชัน asp.net 1.1 ในที่สุด กระบวนการของ bindgrid() ก็ง่ายมาก มันเป็นการผูก
ชุดข้อมูล ds = ชุดข้อมูลใหม่ ();
SqlDataAdapter da = ใหม่ SqlDataAdapter("เลือก * จากพนักงาน", @"แหล่งข้อมูล=localhost;แคตตาล็อกเริ่มต้น=northwind;รหัสผู้ใช้=sa;รหัสผ่าน=123456");
da.Fill(ds,"พนักงาน");
DataView dv = ds.Tables[0].DefaultView;
ถ้า (ViewState["sortexpression"] != null)
-
dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
}
GridView1.DataSource=dv;
GridView1.DataBind();
ในที่นี้ gridview ถูกผูกไว้กับ dataview และ dv.sort ถูกใช้เพื่อกำหนดลำดับของการเรียงลำดับแต่ละรายการ กล่าวคือ ลำดับยังคงไม่เปลี่ยนแปลงหลังจากการเรียงลำดับแต่ละครั้ง
แน่นอนว่าสิ่งสุดท้ายคือเหตุการณ์ page_load
โมฆะที่ได้รับการป้องกัน Page_Load (ผู้ส่งวัตถุ EventArgs e)
-
ถ้า(!IsPostBack)
-
BindGrid();
-
}