public string GetMarkupFileVirtualPath(Hosting.IDotvvmRequestContext context) { throw new NotImplementedException(); }
protected internal override void OnLoad(Hosting.IDotvvmRequestContext context) { DataBind(context); base.OnLoad(context); }
protected internal override void OnPreRender(Hosting.IDotvvmRequestContext context) { DataBind(context); // TODO: support for observable collection base.OnPreRender(context); }
private void DataBind(Hosting.IDotvvmRequestContext context) { if (DataSet is IRefreshableGridViewDataSet refreshableDataSet) { CallGridViewDataSetRefreshRequest(refreshableDataSet); } Children.Clear(); content = new HtmlGenericControl("ul"); var dataContextType = DataContextStack.Create(typeof(IPageableGridViewDataSet), this.GetDataContextType()); content.SetDataContextType(dataContextType); content.SetBinding(DataContextProperty, GetDataSetBinding()); Children.Add(content); var bindings = context.Services.GetService <CommonBindings>(); var dataSet = DataSet; if (dataSet != null) { object enabledValue = HasValueBinding(EnabledProperty) ? (object)ValueBindingExpression.CreateBinding <bool>( context.Configuration.ServiceLocator.GetService <BindingCompilationService>().WithoutInitialization(), h => (bool)GetValueBinding(EnabledProperty).Evaluate(this), new JsSymbolicParameter(JavascriptTranslator.KnockoutContextParameter).Member("$pagerEnabled")) : Enabled; // first button firstLi = new HtmlGenericControl("li"); var firstLink = new LinkButton(); SetButtonContent(context, firstLink, "««", FirstPageTemplate); firstLink.SetBinding(ButtonBase.ClickProperty, bindings.GoToFirstPageCommand); if (!true.Equals(enabledValue)) { firstLink.SetValue(LinkButton.EnabledProperty, enabledValue); } firstLi.Children.Add(firstLink); content.Children.Add(firstLi); // previous button previousLi = new HtmlGenericControl("li"); var previousLink = new LinkButton(); SetButtonContent(context, previousLink, "«", PreviousPageTemplate); previousLink.SetBinding(ButtonBase.ClickProperty, bindings.GoToPrevPageCommand); if (!true.Equals(enabledValue)) { previousLink.SetValue(LinkButton.EnabledProperty, enabledValue); } previousLi.Children.Add(previousLink); content.Children.Add(previousLi); // number fields numbersPlaceHolder = new PlaceHolder(); content.Children.Add(numbersPlaceHolder); var i = 0; foreach (var number in dataSet.PagingOptions.NearPageIndexes) { var li = new HtmlGenericControl("li"); li.SetBinding(DataContextProperty, GetNearIndexesBinding(context, i, dataContextType)); if (number == dataSet.PagingOptions.PageIndex) { li.Attributes["class"] = "active"; } var link = new LinkButton() { Text = (number + 1).ToString() }; link.SetBinding(ButtonBase.ClickProperty, bindings.GoToThisPageCommand); if (!true.Equals(enabledValue)) { link.SetValue(LinkButton.EnabledProperty, enabledValue); } li.Children.Add(link); numbersPlaceHolder.Children.Add(li); i++; } // next button nextLi = new HtmlGenericControl("li"); var nextLink = new LinkButton(); SetButtonContent(context, nextLink, "»", NextPageTemplate); nextLink.SetBinding(ButtonBase.ClickProperty, bindings.GoToNextPageCommand); if (!true.Equals(enabledValue)) { nextLink.SetValue(LinkButton.EnabledProperty, enabledValue); } nextLi.Children.Add(nextLink); content.Children.Add(nextLi); // last button lastLi = new HtmlGenericControl("li"); var lastLink = new LinkButton(); SetButtonContent(context, lastLink, "»»", LastPageTemplate); if (!true.Equals(enabledValue)) { lastLink.SetValue(LinkButton.EnabledProperty, enabledValue); } lastLink.SetBinding(ButtonBase.ClickProperty, bindings.GoToLastPageCommand); lastLi.Children.Add(lastLink); content.Children.Add(lastLi); } }
private void DataBind(Hosting.IDotvvmRequestContext context) { Children.Clear(); content = new HtmlGenericControl("ul"); content.SetBinding(DataContextProperty, GetDataSetBinding()); Children.Add(content); var dataSet = DataSet; if (dataSet != null) { object enabledValue = HasValueBinding(EnabledProperty) ? (object)new ValueBindingExpression(h => GetValueBinding(EnabledProperty).Evaluate(this, EnabledProperty), "$pagerEnabled") : Enabled; // first button firstLi = new HtmlGenericControl("li"); var firstLink = new LinkButton(); SetButtonContent(context, firstLink, "««", FirstPageTemplate); firstLink.SetBinding(ButtonBase.ClickProperty, GoToFirstPageCommand); if (!true.Equals(enabledValue)) { firstLink.SetValue(LinkButton.EnabledProperty, enabledValue); } firstLi.Children.Add(firstLink); content.Children.Add(firstLi); // previous button previousLi = new HtmlGenericControl("li"); var previousLink = new LinkButton(); SetButtonContent(context, previousLink, "«", PreviousPageTemplate); previousLink.SetBinding(ButtonBase.ClickProperty, GoToPrevPageCommand); if (!true.Equals(enabledValue)) { previousLink.SetValue(LinkButton.EnabledProperty, enabledValue); } previousLi.Children.Add(previousLink); content.Children.Add(previousLi); // number fields numbersPlaceHolder = new PlaceHolder(); content.Children.Add(numbersPlaceHolder); var i = 0; foreach (var number in dataSet.NearPageIndexes) { var li = new HtmlGenericControl("li"); li.SetBinding(DataContextProperty, GetNearIndexesBinding(i)); if (number == dataSet.PageIndex) { li.Attributes["class"] = "active"; } var link = new LinkButton() { Text = (number + 1).ToString() }; link.SetBinding(ButtonBase.ClickProperty, GoToThisPageCommand); if (!true.Equals(enabledValue)) { link.SetValue(LinkButton.EnabledProperty, enabledValue); } li.Children.Add(link); numbersPlaceHolder.Children.Add(li); i++; } // next button nextLi = new HtmlGenericControl("li"); var nextLink = new LinkButton(); SetButtonContent(context, nextLink, "»", NextPageTemplate); nextLink.SetBinding(ButtonBase.ClickProperty, GoToNextPageCommand); if (!true.Equals(enabledValue)) { nextLink.SetValue(LinkButton.EnabledProperty, enabledValue); } nextLi.Children.Add(nextLink); content.Children.Add(nextLi); // last button lastLi = new HtmlGenericControl("li"); var lastLink = new LinkButton(); SetButtonContent(context, lastLink, "»»", LastPageTemplate); if (!true.Equals(enabledValue)) { lastLink.SetValue(LinkButton.EnabledProperty, enabledValue); } lastLink.SetBinding(ButtonBase.ClickProperty, GoToLastPageCommand); lastLi.Children.Add(lastLink); content.Children.Add(lastLi); } }
protected virtual void DataBind(Hosting.IDotvvmRequestContext context) { Children.Clear(); var dataContextType = DataContextStack.Create(typeof(IPageableGridViewDataSet), this.GetDataContextType()); ContentWrapper = CreateWrapperList(dataContextType); Children.Add(ContentWrapper); var bindings = context.Services.GetRequiredService <CommonBindings>(); object enabledValue = (HasValueBinding(EnabledProperty) ? (object)ValueBindingExpression.CreateBinding <bool>( bindingService.WithoutInitialization(), h => (bool)GetValueBinding(EnabledProperty).Evaluate(this), new JsSymbolicParameter(JavascriptTranslator.KnockoutContextParameter).Member("$pagerEnabled")) : Enabled); GoToFirstPageButton = CreateNavigationButton("««", FirstPageTemplate, enabledValue, bindings.GoToFirstPageCommand, context); ContentWrapper.Children.Add(GoToFirstPageButton); GoToPreviousPageButton = CreateNavigationButton("«", PreviousPageTemplate, enabledValue, bindings.GoToPrevPageCommand, context); ContentWrapper.Children.Add(GoToPreviousPageButton); // number fields NumberButtonsPlaceHolder = new PlaceHolder(); ContentWrapper.Children.Add(NumberButtonsPlaceHolder); var dataSet = DataSet; if (dataSet != null) { var i = 0; foreach (var number in dataSet.PagingOptions.NearPageIndexes) { var li = new HtmlGenericControl("li"); li.SetBinding(DataContextProperty, GetNearIndexesBinding(context, i, dataContextType)); if (number == dataSet.PagingOptions.PageIndex) { li.Attributes["class"] = "active"; } var link = new LinkButton() { Text = (number + 1).ToString() }; link.SetBinding(ButtonBase.ClickProperty, bindings.GoToThisPageCommand); if (!true.Equals(enabledValue)) { link.SetValue(LinkButton.EnabledProperty, enabledValue); } li.Children.Add(link); NumberButtonsPlaceHolder.Children.Add(li); i++; } } GoToNextPageButton = CreateNavigationButton("»", NextPageTemplate, enabledValue, bindings.GoToNextPageCommand, context); ContentWrapper.Children.Add(GoToNextPageButton); GoToLastPageButton = CreateNavigationButton("»»", LastPageTemplate, enabledValue, bindings.GoToLastPageCommand, context); ContentWrapper.Children.Add(GoToLastPageButton); }
/// <summary> /// Occurs after the viewmodel is applied to the page IHtmlWriter writerand before the commands are executed. /// </summary> protected internal virtual void OnLoad(Hosting.IDotvvmRequestContext context) { }
/// <summary> /// Occurs after the page commands are executed. /// </summary> protected internal virtual void OnPreRender(Hosting.IDotvvmRequestContext context) { }
/// <summary> /// Occurs after the page commands are executed. /// </summary> protected internal override void OnPreRender(Hosting.IDotvvmRequestContext context) { DataBind(context); // TODO: we should handle observable collection operations to persist controlstate of controls inside the Repeater base.OnPreRender(context); }
private void DataBind(Hosting.IDotvvmRequestContext context) { Children.Clear(); emptyDataContainer = null; head = null; var dataSourceBinding = GetDataSourceBinding(); var dataSource = DataSource; Action <string> sortCommand = null; var set = dataSource as IGridViewDataSet; if (set != null) { sortCommand = set.SetSortExpression; } else { sortCommand = SortChanged; } // WORKAROUND: DataSource is null => don't throw exception if (sortCommand == null && dataSource == null) { sortCommand = s => { throw new DotvvmControlException(this, "Cannot sort when DataSource is null."); }; } CreateHeaderRow(context, sortCommand); var index = 0; if (dataSource != null) { // create header row var items = GetIEnumerableFromDataSource(dataSource); var javascriptDataSourceExpression = dataSourceBinding.GetKnockoutBindingExpression(); foreach (var item in items) { // create row var placeholder = new DataItemContainer { DataItemIndex = index }; placeholder.SetBinding(DataContextProperty, GetItemBinding((IList)items, javascriptDataSourceExpression, index)); placeholder.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), index)); placeholder.ID = index.ToString(); CreateRowWithCells(context, placeholder); Children.Add(placeholder); index++; } numberOfRows = index; } else { numberOfRows = 0; } // add empty item if (EmptyDataTemplate != null) { emptyDataContainer = new EmptyData(); emptyDataContainer.SetBinding(DataSourceProperty, dataSourceBinding); EmptyDataTemplate.BuildContent(context, emptyDataContainer); Children.Add(emptyDataContainer); } }
public string GetMarkupFileVirtualPath(Hosting.IDotvvmRequestContext context) { return(context.Route.VirtualPath); }
internal override void OnPreRenderComplete(Hosting.IDotvvmRequestContext context) { context.ResourceManager.AddRequiredResource(ResourceConstants.DotvvmFileUploadCssResourceName); base.OnPreRenderComplete(context); }
protected internal override void OnInit(Hosting.IDotvvmRequestContext context) { base.OnInit(context); }