Advertisement
Advertisement
| 08.14.2008 at 03:50PM PDT, ID: 23650004 |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: |
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
//Sorting, Paging and CheckBox state preservation -- seem to be stable now
public partial class UserControls_Workflow_CO2SearchResults : System.Web.UI.UserControl
{
private string _workflowConnectionString = ConfigurationManager.ConnectionStrings["WORKFLOWConnection"].ConnectionString;
private DataSet _ds;
//PROPERTY NOT IMPLEMENTED YET - NOT BEING USED YET
public DataSet CurrentDataSource
{
get
{
return _ds;
}
set
{
_ds = value;
}
}
protected void Page_Load( object sender, EventArgs e )
{
string tempArgument = Request.Params.Get("__EVENTARGUMENT");
//INITIALIZATION
if (!Page.IsPostBack)
{
string[] DataKeyNames = { "ID" };
ViewState["DataKeyNames"] = DataKeyNames;
ViewState["SortExp"] = DataKeyNames.GetValue(0);
ViewState["SortDir"] = SortDirection.Descending;
ViewState["PageIndex"] = 0;
LocalSelectAllWorkitemTypes();
this.BuildGridView(true);
}
//THE "CHECK ALL" CHECKBOX IN THE HEADER WAS CLICKED
if (tempArgument == "CHECKALL")
{
bool statepassedin = false;
string newpageindex = Request.Params.Get("__EVENTTARGET");
if (newpageindex == "true")
{
statepassedin = true;
}
this.HandleCheckAllClick(statepassedin);
}
GatherCheckBoxStatus();
//A PAGER BUTTON WAS CLICKED
if (tempArgument == "PAGERBUTTON")
{
string newpageindex = Request.Params.Get("__EVENTTARGET");
int adjustedPageIndex = Int32.Parse(newpageindex) - 1;
ViewState["PageIndex"] = adjustedPageIndex;
this.BuildGridView(false);
}
}
//PRESERVE THE CHECKBOX STATUS ACROSS POSTBACKS (SORTING AND PAGING)
private void GatherCheckBoxStatus()
{
if ((DataSet)ViewState["DataStore"] != null)
{
DataSet ds = (DataSet)ViewState["DataStore"];
for (int i = 0; i < this.GridViewSearchResults.Rows.Count; i++)
{
bool state = ((CheckBox)this.GridViewSearchResults.Rows[i].Cells[0].Controls[0]).Checked;
string tempID = ((CheckBox)this.GridViewSearchResults.Rows[i].Cells[0].Controls[0]).ToolTip;
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr[this.GridViewSearchResults.DataKeyNames[0].ToString()].ToString() == tempID)
{
dr["chk"] = state;
}
}
}
ViewState["DataStore"] = ds;
}
}
//BUILD A TEMPORARY DATASET
//FUTURE VERSIONS SHOULD USE A PROPERTY FOR THIS
public DataSet LocalSelectAllWorkitemTypes()
{
DataSet ds = new DataSet();
if (ViewState["DataStore"] == null)
{
using (SqlConnection connection = new SqlConnection(_workflowConnectionString))
{
using (SqlCommand command = new SqlCommand("SelectAllWorkitemTypesTEST", connection))
{
command.CommandType = CommandType.StoredProcedure;
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(ds);
}
}
}
bool chkBool = false;
ds.Tables[0].Columns.Add("chk", chkBool.GetType());
ViewState["DataStore"] = ds;
return ds;
}
else
{
return (DataSet)ViewState["DataStore"];
}
}
//CLEAR ALL COLUMNS AND REBUILD THE GRIDVIEW PROGRAMMATICALLY
private void BuildGridView(bool ToggleSort)
{
DataSet ds = (DataSet)ViewState["DataStore"];
this.GridViewSearchResults.AutoGenerateColumns = false;
this.GridViewSearchResults.DataKeyNames = (string[])ViewState["DataKeyNames"];
this.GridViewSearchResults.Columns.Clear();
this.GridViewSearchResults.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
CheckBoxField cbf = new CheckBoxField();
cbf.DataField = ds.Tables[0].Columns["chk"].ToString();
cbf.HeaderText = "";
cbf.HeaderStyle.ForeColor = System.Drawing.Color.White;
cbf.HeaderStyle.BackColor = System.Drawing.Color.Black;
this.GridViewSearchResults.Columns.Add(cbf);
foreach (DataColumn dc in ds.Tables[0].Columns)
{
if (dc.ColumnName != "chk")
{
BoundField bf = new BoundField();
bf.HeaderText = dc.ColumnName;
bf.DataField = dc.ColumnName;
bf.HeaderStyle.ForeColor = System.Drawing.Color.White;
bf.HeaderStyle.BackColor = System.Drawing.Color.Black;
bf.SortExpression = dc.ColumnName;
this.GridViewSearchResults.Columns.Add(bf);
}
}
string sortExp = (string)ViewState["SortExp"];
SortDirection sd = (SortDirection)ViewState["SortDir"];
string sortDir = "";
if (ToggleSort)
{
if (sd == SortDirection.Ascending)
{
sortDir = " DESC";
ViewState["SortDir"] = SortDirection.Descending;
}
else
{
sortDir = " ASC";
ViewState["SortDir"] = SortDirection.Ascending;
}
ds.Tables[0].DefaultView.Sort = sortExp + sortDir;
}
else
{
if (sd == SortDirection.Ascending)
{
sortDir = " ASC";
}
else
{
sortDir = " DESC";
}
ds.Tables[0].DefaultView.Sort = sortExp + sortDir;
}
this.GridViewSearchResults.DataSource = ds.Tables[0].DefaultView;
this.GridViewSearchResults.PageIndex = (int)ViewState["PageIndex"];
ViewState["DataStore"] = ds;
this.GridViewSearchResults.DataBind();
}
//TOGGLE THE "CHECK ALL" STATE ON OR OFF
private void HandleCheckAllClick(bool statepassedin)
{
DataSet ds = (DataSet)ViewState["DataStore"];
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr["chk"] != null)
{
dr["chk"] = statepassedin;
}
}
ViewState["DataStore"] = ds;
BuildGridView(false);
}
protected void GridViewSearchResults_RowDataBound( object sender, GridViewRowEventArgs e)
{
//ADD CHECKBOX TO HEADER ROW (TO SUPPORT "CHECK ALL" FUNCTIONALITY)
if (e.Row.RowType == DataControlRowType.Header)
{
try
{
CheckBox cb = new CheckBox();
cb.ID = "newchecked";
cb.Attributes.Add("onclick", "CheckAllClicked(this)");
TableCell tc = new TableCell();
tc.ID = "tc";
tc.BackColor = System.Drawing.Color.Black;
tc.Style.Add("border-bottom-style", "none");
e.Row.Cells.AddAt(0, tc);
e.Row.Cells[0].Controls.Add(cb);
e.Row.ToolTip = "header";
}
catch (Exception ee)
{
System.Diagnostics.Debug.WriteLine(ee.ToString());
}
}
//ADD TOOLTIP (DATA KEY NAMES) TO CHECKBOX FOR USE LATER WHILE GATHERING CHECK BOX STATE
if (e.Row.RowType == DataControlRowType.DataRow)
{
((CheckBox)((TableCell)((DataControlFieldCell)e.Row.Cells[0])).Controls[0]).Enabled = true;
string ID = ((DataRowView)e.Row.DataItem)[this.GridViewSearchResults.DataKeyNames[0]].ToString();
((CheckBox)((TableCell)((DataControlFieldCell)e.Row.Cells[0])).Controls[0]).ID = "rowCB" + ID;
((CheckBox)((TableCell)((DataControlFieldCell)e.Row.Cells[0])).Controls[0]).ToolTip = ID;
}
//BUILD CUSTOM PAGER
if (e.Row.RowType == DataControlRowType.Pager)
{
DataSet ds = new DataSet();
ds = (DataSet)ViewState["DataStore"];
if (ds.Tables[0].Rows.Count > 0)
{
int recordcount = ds.Tables[0].Rows.Count;
int pagecount = recordcount / this.GridViewSearchResults.PageSize;
for (int i = 0; i <= pagecount; i++)
{
Button pagerBtn = new Button();
pagerBtn.Attributes.Add("onclick", "RespondToPagerClick(this)");
pagerBtn.ID = "pagerBtn" + i.ToString();
pagerBtn.Text = (i + 1).ToString();
if (ViewState["PageIndex"] != null)
{
if (i == (int)ViewState["PageIndex"])
{
pagerBtn.Enabled = false;
pagerBtn.Style.Add(HtmlTextWriterStyle.BorderColor, "Red");
}
else
{
pagerBtn.Enabled = true;
}
}
PlaceHolder ph = (PlaceHolder)e.Row.FindControl("phPager");
Label countItems = (Label)e.Row.FindControl("LabelTotalWorkItems");
countItems.Text = ("(" + recordcount.ToString() + " total results)");
ph.Controls.Add(pagerBtn);
}
}
}
}
protected void GridViewSearchResults_Sorting( object sender, GridViewSortEventArgs e )
{
ViewState["SortExp"] = e.SortExpression;
BuildGridView(true);
}
}
|