protected override void RenderContents(IHtmlWriter writer, RenderContext context) { writer.AddKnockoutDataBind("css", "{ 'disabled': IsFirstPage() }"); firstLi.Render(writer, context); writer.AddKnockoutDataBind("css", "{ 'disabled': IsFirstPage() }"); previousLi.Render(writer, context); // render template writer.WriteKnockoutDataBindComment("foreach", "NearPageIndexes"); context.PathFragments.Push("NearPageIndexes[$index]"); // render page number numbersPlaceholder.Children.Clear(); HtmlGenericControl li; if (!RenderLinkForCurrentPage) { writer.AddKnockoutDataBind("visible", "$data == $parent.PageIndex()"); li = new HtmlGenericControl("li"); li.SetValue(Internal.IsDataContextBoundaryProperty, true); var literal = new Literal(); literal.SetBinding(Literal.TextProperty, new ValueBindingExpression("_this + 1")); li.Children.Add(literal); numbersPlaceholder.Children.Add(li); li.Render(writer, context); writer.AddKnockoutDataBind("visible", "$data != $parent.PageIndex()"); } writer.AddKnockoutDataBind("css", "{ 'active': $data == $parent.PageIndex()}"); li = new HtmlGenericControl("li"); li.SetValue(Internal.IsDataContextBoundaryProperty, true); var link = new LinkButton(); link.SetBinding(ButtonBase.TextProperty, new ValueBindingExpression("_this + 1")); link.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression("_parent.GoToPage(_this)")); li.Children.Add(link); numbersPlaceholder.Children.Add(li); li.Render(writer, context); context.PathFragments.Pop(); writer.WriteKnockoutDataBindEndComment(); writer.AddKnockoutDataBind("css", "{ 'disabled': IsLastPage() }"); nextLi.Render(writer, context); writer.AddKnockoutDataBind("css", "{ 'disabled': IsLastPage() }"); lastLi.Render(writer, context); }
public virtual void CreateHeaderControls(RedwoodRequestContext context, GridView gridView, string sortCommandPath, HtmlGenericControl cell) { if (AllowSorting) { if (string.IsNullOrEmpty(sortCommandPath)) { throw new Exception("Cannot use column sorting where no sort command is specified. Either put IGridViewDataSet in the DataSource property of the GridView, or set the SortChanged command on the GridView to implement custom sorting logic!"); } var sortExpression = GetSortExpression(); // TODO: verify that sortExpression is a single property name var linkButton = new LinkButton() { Text = HeaderText }; linkButton.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression(string.Format("{0} (\"{1}\")", sortCommandPath, sortExpression))); cell.Children.Add(linkButton); } else { var literal = new Literal(HeaderText); cell.Children.Add(literal); } }