Advertisement
Advertisement
| 08.15.2008 at 11:42AM PDT, ID: 23652251 |
|
[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: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: |
CODE BEHIND:
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;
//Most stable version to date. CHECK ALL functionality is working
//small bug with first row now getting checked
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();
GatherCheckBoxStatus(false,false);
this.BuildGridView(true);
}
//THE "CHECK ALL" CHECKBOX IN THE HEADER WAS CLICKED
if (tempArgument == "CHECKALL")
{
bool statepassedin = false;
this.HiddenField1.Value = "false";
string newpageindex = Request.Params.Get("__EVENTTARGET");
if (newpageindex == "true")
{
statepassedin = true;
this.HiddenField1.Value = "true";
}
GatherCheckBoxStatus(true,statepassedin);
BuildGridView(false);
}
//A PAGER BUTTON WAS CLICKED
if (tempArgument == "PAGERBUTTON")
{
string newpageindex = Request.Params.Get("__EVENTTARGET");
int adjustedPageIndex = Int32.Parse(newpageindex) - 1;
ViewState["PageIndex"] = adjustedPageIndex;
GatherCheckBoxStatus(false,false);
this.BuildGridView(false);
}
}
//PRESERVE THE CHECKBOX STATUS ACROSS POSTBACKS (SORTING AND PAGING)
private void GatherCheckBoxStatus(bool PerformOverride, bool CheckState)
{
string[] arrIDs = this.HiddenField1.Value.Split(new char[] { '|' });
if (PerformOverride)
{
DataSet ds = (DataSet)ViewState["DataStore"];
foreach (DataRow row in ds.Tables[0].Rows)
{
string ID = string.Empty;
string[] datakeynames = (string[])ViewState["DataKeyNames"];
ID = row[datakeynames.GetValue(0).ToString()].ToString();
if (CheckState)
{
if (Array.IndexOf(arrIDs, ID) == -1)
{
this.HiddenField1.Value += ID + "|";
}
}
else
{
if (Array.IndexOf(arrIDs, ID) != -1)
{
this.HiddenField1.Value = this.HiddenField1.Value.Replace(ID + "|", "");
}
}
}
}
else
{
foreach (GridViewRow row in this.GridViewSearchResults.Rows)
{
CheckBox cb = (CheckBox)row.Cells[0].Controls[0];
string ID = string.Empty;
ID = this.GridViewSearchResults.DataKeys[row.RowIndex].Value.ToString();
if (cb.Checked)
{
if (Array.IndexOf(arrIDs, ID) == -1)
{
this.HiddenField1.Value += ID + "|";
}
}
else
{
if (Array.IndexOf(arrIDs, ID) != -1)
{
this.HiddenField1.Value = this.HiddenField1.Value.Replace(ID + "|", "");
}
}
}
}
}
//BUILD A TEMPORARY DATASET
//FUTURE VERSIONS SHOULD USE A PROPERTY FOR THIS
public void 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;
}
}
//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();
}
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.Checked = false;
if (HiddenField2.Value == "true")
{
cb.Checked = true;
}
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)
{
string[] arrIDs = this.HiddenField1.Value.Split(new char[] { '|' });
CheckBox cb = (CheckBox)e.Row.Cells[0].Controls[0];
cb.Enabled = true;
string ID = this.GridViewSearchResults.DataKeys[e.Row.RowIndex].Value.ToString();
cb.ToolTip = this.GridViewSearchResults.DataKeyNames[0].ToString();
if (Array.IndexOf(arrIDs, ID) != -1)
{
cb.Checked = true;
}
}
//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;
GatherCheckBoxStatus(false, false);
BuildGridView(true);
}
}
MARKUP:
<%@ Control Language="C#" EnableViewState="true" AutoEventWireup="true" CodeFile="CO2SearchResults.ascx.cs" Inherits="UserControls_Workflow_CO2SearchResults" %>
<%--//Most stable version to date. CHECK ALL functionality is working
//small bug with first row now getting checked--%>
<script type="text/javascript">
function SortValid()
{
__doPostBack(1,'SORTVALID');
}
function RespondToPagerClick(current)
{
__doPostBack(current.value,'PAGERBUTTON');
}
function CheckAllClicked(current)
{
__doPostBack(current.checked,'CHECKALL');
}
function CheckBoxChecked(current)
{
theForm.somesecret.value = current.now_checked;
}
</script>
<style type="text/css">
.gridview td
{
border-bottom: solid 2px black;
padding:10px 10px 10px 10px;
}
</style>
<asp:GridView
CssClass="gridview"
ID="GridViewSearchResults"
runat="server"
AllowPaging="True"
AllowSorting="true"
GridLines="None"
Height="400px"
OnRowDataBound="GridViewSearchResults_RowDataBound"
EmptyDataText="No Matching Records Found"
AutoGenerateColumns="False"
Width="100%"
onsorting="GridViewSearchResults_Sorting" >
<PagerTemplate>
<div style="text-align:right;">
<table id="table1" runat="server">
<tr>
<td style="border-bottom-style:none;">
<asp:Label ID="Label2" runat="server" Text="Results: "></asp:Label>
</td>
<td style="border-bottom-style:none;">
<asp:PlaceHolder ID="phPager" runat="server"></asp:PlaceHolder>
</td>
<td style="border-bottom-style:none;">
<asp:Label ID="LabelTotalWorkItems" runat="server" Text="0 items found"></asp:Label>
</td>
</tr>
</table>
</div>
</PagerTemplate>
</asp:GridView>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:HiddenField ID="HiddenField2" runat="server" Value="false" />
|