Monday, August 3, 2009

FilterExpression-Paging, Sorting Problem

  • เรื่องของ GridView กับ Paging และ FilterExpression
  • คือ ผูก GridView กับ SQLDataSource ใช้ FilterExpression มาช่วยกรองข้อมูลเพื่อแสดง และ เปิดการใช้งาน paging ของ GridView ด้วย
  • เมื่อทำการ filter ข้อมูลแล้ว เลื่อน page แล้วข้อมูลที่แสดงกลับไปเป็นข้อมูลก่อน filter ซะงั้น
  • ปัญหาและวิธีแก้ให้เรา มุ่งประเด็นไปที่ PostBack และมีการใช้ State มาช่วยเก็บ filterexpression ก่อนจะ refresh หรือ เปลี่ยน paging

// ตรงนี้เป็นการจัดการ event ของ control ที่จะให้ทำการแล้วให้ filter ข้อมูล

{
.....

SqlDataSource1.FilterExpression = "some expression";

ViewState.Add("filter", SqlDataSource1.FilterExpression);

//GridView1.DataBind(); อันนี้เราเพิ่มเอง ไม่ต้องใส่ก็ได้มั้ง

GridView1.PageIndex = 0


}

// ตอนโหลดหน้า เราควรตรวจสอบหน่อยว่าเป็นการ refresh หรือเปล่าผ่าน IsPostBack()
Page_Load {
if (Page.IsPostBack) {
if (ViewState["filter"] != null) {
SqlDataSource1.FilterExpression = ViewState["filter"].ToString();
}
}
}

Reference

No comments:

Post a Comment

Popular Posts