- เรื่องของ 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();
}
}
}
No comments:
Post a Comment