protected void gvitem_Sorting(object sender, GridViewSortEventArgs e) { switch (e.SortExpression) { case "Quantity": if (e.SortDirection == SortDirection.Ascending) { DBOps db = new DBOps(); DataSet ds = db.ReadInventoryTable(); // For the future : - DataTable dt = ((DataSet)ViewState["gvitem"]).Tables["table"]; var query = from row in ds.Tables["table"].AsEnumerable() orderby row.Field <Int64>("Quantity") select row; // Asc query for Melder field; DataTable result = query.CopyToDataTable(); Session["SortedView"] = result; gvitem.DataSource = result; gvitem.DataBind(); } else { DBOps db = new DBOps(); DataSet ds = db.ReadInventoryTable(); //DataTable dt = ((DataSet)ViewState["gvitem"]).Tables["table"]; var query = from row in ds.Tables["table"].AsEnumerable() orderby row.Field <Int64>("Quantity") descending select row; // Desc query for Melder field ; DataTable result = query.CopyToDataTable(); Session["SortedView"] = result; gvitem.DataSource = result; gvitem.DataBind(); } break; // case statements for your other fields. case "Category": if (e.SortDirection == SortDirection.Ascending) { } else { } break; } }
protected void btnSearch_Click(object sender, EventArgs e) { string col = ddlColumn.SelectedValue; var type = from d in searchColumns.Tables["Table"].AsEnumerable() where d.Field <string>("name") == col select d.Field <string>("type"); Type searchColumnType = GetMyType(type.ToArray()[0]); DBOps db = new DBOps(); DataSet ds = db.ReadInventoryTable(); //DataSet ds = (DataSet)gvitem.DataSource; DataTable dt = ds.Tables["Table"]; DataTable result; if (searchColumnType == typeof(int)) { var query = from row in dt.AsEnumerable() where row.Field <Int64>(col) == Int64.Parse(txtSearchtext.Text) select row; result = query.CopyToDataTable(); } else { var query = from row in dt.AsEnumerable() where row.Field <string>(col).Contains(txtSearchtext.Text) select row; result = query.CopyToDataTable(); } int count = result.Rows.Count; lblSearchInfo.Text = count.ToString() + " row(s) matched"; lblSearchInfo.DataBind(); dgSearchResult.DataSource = result; dgSearchResult.DataBind(); }
protected void RefreshTable() { try { if (ddlLabselect.SelectedValue == "All") { DBOps db = new DBOps(); DataSet ds = db.ReadInventoryTable(); gvitem.DataSource = ds; gvitem.DataBind(); ViewState["gvitems"] = ds; } else { DBOps db = new DBOps(); //DataSet ds = (DataSet)ViewState["gvitems"]; // Apparently grid view items are not stored persistently across postabacks so then either I have to hit the db again or use the viewstate i.e. gvitems.DataSource doesnt work here DataSet ds = db.ReadInventoryTable(); DataTable dt = ds.Tables["Table"]; var query = from row in dt.AsEnumerable() where row.Field <string>("lab") == (ddlLabselect.SelectedValue) select row; DataTable result = query.CopyToDataTable(); gvitem.DataSource = result; gvitem.DataBind(); } } catch (Exception ex) { if (ex.Message.Contains("no rows")) { lblPageInfo.Text = "There are no items in this lab"; lblPageInfo.DataBind(); } } }