/// <summary> /// Renders a column cell, i.e. one column of one row in the query results. /// </summary> /// <param name="renderedCell">The value to render, from the query results.</param> /// <param name="webNameRenderedCell">If the row containing this cell also contains a cell /// of type <c>WebNameRenderedCell</c>, i.e. a cell referring to a SharePoint Web site, /// this parameter refers to that cell. Otherwise, this parameter is <c>null</c>. /// </param> /// <param name="hw">The <c>HtmlTextWriter</c> to write to.</param> /// <param name="slkStore">The SlkStore to use to get assignment information from.</param> void RenderColumnCell(RenderedCell renderedCell, WebNameRenderedCell webNameRenderedCell, HtmlTextWriter hw, SlkStore slkStore) { // render the cell contents inside a "<span>" (not sure why SharePoint uses a "<span>" // here, but I'm copying what they do) if (renderedCell.ToolTip != null) { hw.AddAttribute(HtmlTextWriterAttribute.Title, renderedCell.ToolTip); } using (new HtmlBlock(HtmlTextWriterTag.Span, 0, hw)) { if (webNameRenderedCell == renderedCell && webNameRenderedCell.RenderAsLink) { RenderCellWithLink(webNameRenderedCell, hw, renderedCell.ToString(), "#", "_parent"); } else if (renderedCell.Id != null) { if (renderedCell.Id.ItemTypeName == Schema.AssignmentItem.ItemTypeName) { // render a link to the Instructor Assignment Properties page string url = "Grading.aspx?AssignmentId={0}"; RenderCellWithLink(webNameRenderedCell, hw, renderedCell.ToString(), url, "_parent", renderedCell.Id.GetKey().ToString(CultureInfo.InvariantCulture)); } else if (renderedCell.Id.ItemTypeName == Schema.LearnerAssignmentItem.ItemTypeName) { Guid learnerAssignmentGuidId = slkStore.GetLearnerAssignmentGuidId(renderedCell.Id); if (IsObserver) { // Display this cell as an url and clicking this url will launch frameset in StudentReview mode string url = "Frameset/Frameset.aspx?SlkView=StudentReview&{0}={1}"; RenderCellWithLink(webNameRenderedCell, hw, renderedCell.ToString(), url, "_blank", FramesetQueryParameter.LearnerAssignmentId, learnerAssignmentGuidId.ToString()); } else { // render a link to the Learner Assignment Properties page string url = "Lobby.aspx?{0}={1}&{2}={3}"; RenderCellWithLink(webNameRenderedCell, hw, renderedCell.ToString(), url, "_parent", FramesetQueryParameter.LearnerAssignmentId, learnerAssignmentGuidId.ToString(), QueryStringKeys.Source, RawSourceUrl); } } else { hw.WriteEncodedText(renderedCell.ToString()); } } else { hw.WriteEncodedText(renderedCell.ToString()); } } }
/// <summary> /// Renders the entire query results in the inner table. /// </summary> /// <param name="queryDef">The definition of the query that was executed.</param> /// <param name="renderedRows">Rendered query results.</param> /// <param name="hw">The <c>HtmlTextWriter</c> to write to.</param> /// void RenderQueryResults(QueryDefinition queryDef, List <RenderedCell[]> renderedRows, HtmlTextWriter hw) { // get the column definitions IList <ColumnDefinition> columnDefs = queryDef.Columns; //Get the column index to sort on and sort order int sortColumnIndex; bool sortAscending = GetSortIndex(out sortColumnIndex); // sort <renderedRows> if so specified if ((sortColumnIndex >= 0) && (sortColumnIndex < queryDef.Columns.Count)) { queryDef.SortRenderedRows(renderedRows, sortColumnIndex, sortAscending); } // render the "<table>" element and its contents hw.AddAttribute(HtmlTextWriterAttribute.Class, "ms-summarystandardbody"); // skipped: id=TABLE1 dir=None hw.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); hw.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "1"); hw.AddAttribute(HtmlTextWriterAttribute.Style, "width:100%;"); hw.AddAttribute(HtmlTextWriterAttribute.Border, "0"); using (new HtmlBlock(HtmlTextWriterTag.Table, 1, hw)) { // render the header row hw.AddAttribute(HtmlTextWriterAttribute.Class, "ms-viewheadertr"); hw.AddAttribute(HtmlTextWriterAttribute.Valign, "top"); using (new HtmlBlock(HtmlTextWriterTag.Tr, 0, hw)) { // render the column headers int columnIndex = 0; foreach (ColumnDefinition columnDef in columnDefs) { bool?ascendingSort; if (sortColumnIndex == columnIndex) { ascendingSort = sortAscending; } else { ascendingSort = null; } RenderColumnHeader(columnDef, columnIndex, ascendingSort, hw); columnIndex++; } } //If No Items Found if (renderedRows.Count == 0) { using (new HtmlBlock(HtmlTextWriterTag.Tr, 1, hw)) { hw.AddAttribute(HtmlTextWriterAttribute.Colspan, columnDefs.Count.ToString(CultureInfo.InvariantCulture)); using (new HtmlBlock(HtmlTextWriterTag.Td, 1, hw)) { SlkError slkError = new SlkError(ErrorType.Info, Constants.Space + Constants.Space + PageCulture.Resources.AlwpNoItemFound); WebParts.ErrorBanner.RenderErrorItems(hw, slkError); } } } else { // render the rows int rowIndex = 0; foreach (RenderedCell[] renderedRow in renderedRows) { // render the "<tr>"; note that every other row is shaded ("ms-alternating") hw.AddAttribute(HtmlTextWriterAttribute.Class, (((rowIndex & 1) == 0) ? "ms-alternating" : "")); using (new HtmlBlock(HtmlTextWriterTag.Tr, 1, hw)) { // set <webNameRenderedCell> to any cell in the row which is of type // WebNameRenderedCell, i.e. which refers to a SharePoint Web site, // or null if none WebNameRenderedCell webNameRenderedCell = null; Guid learnerAssignmentGUID = Guid.Empty; foreach (RenderedCell renderedCell in renderedRow) { if (webNameRenderedCell == null) { webNameRenderedCell = renderedCell as WebNameRenderedCell; } if (learnerAssignmentGUID == Guid.Empty) { if (renderedCell.Id != null) { if (renderedCell.Id.ItemTypeName == Schema.LearnerAssignmentItem.ItemTypeName) { learnerAssignmentGUID = SlkStore.GetLearnerAssignmentGuidId(renderedCell.Id); } } } if (webNameRenderedCell != null && learnerAssignmentGUID != Guid.Empty) { break; } } // render the cells in this row int columnIndex = 0; foreach (RenderedCell renderedCell in renderedRow) { ColumnDefinition columnDef = columnDefs[columnIndex]; hw.AddAttribute(HtmlTextWriterAttribute.Class, "ms-vb2"); if (!columnDef.Wrap) { hw.AddAttribute(HtmlTextWriterAttribute.Nowrap, "true"); } using (new HtmlBlock(HtmlTextWriterTag.Td, 1, hw)) { if (columnDef.Title.Equals(PageCulture.Resources.AlwpFileSubmissionColumnTitle)) { RenderFileSubmissionCell(renderedCell, webNameRenderedCell, learnerAssignmentGUID, hw); } else { RenderColumnCell(renderedCell, webNameRenderedCell, hw, SlkStore); } } columnIndex++; } } rowIndex++; } } } }