| |
Sign In
i'm just posting this here for reference. it is a datagrid that supports standard paging and sorting, and displays the current set of record indices e.g. "1-15 of 1000 records"
private void bindGrid() { DataSet ds = new DB.Audits().SelectAllPendingAudits(); // the sorting is always retrieved from viewstate, if it exists or not. string sort = String.Concat(ViewState["Sort"], ""); if(sort != "") this.lblSort.Text = "Sorted by " + sort + " in ascending order"; int numRows = ds.Tables[0].Rows.Count; if(numRows > 0) { int start = this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize + 1; int end = Math.Min(numRows, start + this.DataGrid1.PageSize - 1); this.lblHeading.Text = String.Format("Displaying {0}-{1} of {2} records", start, end, numRows); this.DataGrid1.AllowPaging = (numRows > this.DataGrid1.PageSize); // don't show pager unless relevant this.DataGrid1.Visible = true; DataView dv = new DataView(ds.Tables[0]); dv.Sort = sort; this.DataGrid1.DataSource = dv; this.DataGrid1.DataBind(); } else { this.lblHeading.Text = "No records"; this.DataGrid1.Visible = false; } } private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if(e.CommandName == "Sort") { ViewState["Sort"] = e.CommandArgument.ToString(); // is picked up in bindGrid() function this.DataGrid1.CurrentPageIndex = 0; this.bindGrid(); } } private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { this.DataGrid1.CurrentPageIndex = e.NewPageIndex; bindGrid(); }
Remember Me