protected override void AddAttributesToRender(IHtmlWriter writer, IDotvvmRequestContext context) { writer.AddKnockoutDataBind("draggable-list", BuildControlKnockoutBinding()); writer.AddKnockoutForeachDataBind($"DraggableList.getDataSourceFromExpression({GetDataSourceBinding().GetKnockoutBindingExpression(this)})"); writer.AddAttribute("class", "draggable-list", true); base.AddAttributesToRender(writer, context); }
protected override void RenderContents(IHtmlWriter writer, IDotvvmRequestContext context) { // render the header head?.Render(writer, context); // render body if (!RenderOnServer) { writer.AddKnockoutForeachDataBind("dotvvm.evaluator.getDataSourceItems($gridViewDataSet)"); } writer.RenderBeginTag("tbody"); // render contents if (RenderOnServer) { // render on server var index = 0; foreach (var child in Children.Except(new[] { head !, emptyDataContainer ! }))
protected override void RenderBeginTag(IHtmlWriter writer, RenderContext context) { TagName = WrapperTagName; if (!RenderOnServer) { var javascriptDataSourceExpression = GetForeachDataBindJavascriptExpression(); if (RenderWrapperTag) { writer.AddKnockoutForeachDataBind(javascriptDataSourceExpression); } else { writer.WriteKnockoutForeachComment(javascriptDataSourceExpression); } } if (RenderWrapperTag) { base.RenderBeginTag(writer, context); } }
protected override void RenderContents(IHtmlWriter writer, IDotvvmRequestContext context) { // render the header head?.Render(writer, context); // render body if (!RenderOnServer) { writer.AddKnockoutForeachDataBind("dotvvm.evaluator.getDataSourceItems($gridViewDataSet)"); } writer.RenderBeginTag("tbody"); // render contents if (RenderOnServer) { // render on server var index = 0; foreach (var child in Children.Except(new[] { head, emptyDataContainer })) { child.Render(writer, context); index++; } } else { // render on client if (InlineEditing) { var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), "$index")); placeholder.SetValue(Internal.ClientIDFragmentProperty, "$index()"); writer.WriteKnockoutDataBindComment("if", "ko.unwrap(ko.unwrap($gridViewDataSet).EditRowId) !== ko.unwrap($data[ko.unwrap(ko.unwrap($gridViewDataSet).PrimaryKeyPropertyName)])"); CreateTemplates(context, placeholder); Children.Add(placeholder); placeholder.Render(writer, context); writer.WriteKnockoutDataBindEndComment(); var placeholderEdit = new DataItemContainer { DataContext = null }; placeholderEdit.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), "$index")); placeholderEdit.SetValue(Internal.ClientIDFragmentProperty, "$index()"); writer.WriteKnockoutDataBindComment("if", "ko.unwrap(ko.unwrap($gridViewDataSet).EditRowId) === ko.unwrap($data[ko.unwrap(ko.unwrap($gridViewDataSet).PrimaryKeyPropertyName)])"); CreateTemplates(context, placeholderEdit, true); Children.Add(placeholderEdit); placeholderEdit.Render(writer, context); writer.WriteKnockoutDataBindEndComment(); } else { var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), "$index")); placeholder.SetValue(Internal.ClientIDFragmentProperty, "$index()"); CreateRowWithCells(context, placeholder); Children.Add(placeholder); placeholder.Render(writer, context); } } writer.RenderEndTag(); }
protected override void RenderBeginTag(IHtmlWriter writer, IDotvvmRequestContext context) { TagName = WrapperTagName; if (!RenderOnServer) { var javascriptDataSourceExpression = GetForeachDataBindJavascriptExpression(); if (RenderWrapperTag) { writer.AddKnockoutForeachDataBind(javascriptDataSourceExpression); } else { writer.WriteKnockoutForeachComment(javascriptDataSourceExpression); } } if (RenderWrapperTag) { base.RenderBeginTag(writer, context); } }
protected override void RenderContents(IHtmlWriter writer, IDotvvmRequestContext context) { // render the header head?.Render(writer, context); // render body if (!RenderOnServer) { writer.AddKnockoutForeachDataBind("dotvvm.evaluator.getDataSourceItems($gridViewDataSet)"); } writer.RenderBeginTag("tbody"); // render contents if (RenderOnServer) { // render on server var index = 0; foreach (var child in Children.Except(new[] { head, emptyDataContainer })) { child.Render(writer, context); index++; } } else { // render on client if (InlineEditing) { var propertySerialization = context.Services .GetRequiredService <IPropertySerialization>(); var primaryKeyProperty = ResolvePrimaryKeyProperty(); var primaryKeyPropertyName = propertySerialization.ResolveName(primaryKeyProperty); var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetDataContextTypeFromDataSource(GetBinding(DataSourceProperty)); placeholder.SetValue(Internal.PathFragmentProperty, GetPathFragmentExpression() + "/[$index]"); placeholder.SetValue(Internal.ClientIDFragmentProperty, GetValueRaw(Internal.CurrentIndexBindingProperty)); writer.WriteKnockoutDataBindComment("if", "ko.unwrap(ko.unwrap($gridViewDataSet).RowEditOptions().EditRowId) " + $"!== ko.unwrap($data['{primaryKeyPropertyName}'])"); CreateTemplates(context, placeholder); Children.Add(placeholder); placeholder.Render(writer, context); writer.WriteKnockoutDataBindEndComment(); var placeholderEdit = new DataItemContainer { DataContext = null }; placeholderEdit.SetDataContextTypeFromDataSource(GetBinding(DataSourceProperty)); placeholderEdit.SetValue(Internal.PathFragmentProperty, GetPathFragmentExpression() + "/[$index]"); placeholderEdit.SetValue(Internal.ClientIDFragmentProperty, GetValueRaw(Internal.CurrentIndexBindingProperty)); writer.WriteKnockoutDataBindComment("if", "ko.unwrap(ko.unwrap($gridViewDataSet).RowEditOptions().EditRowId) " + $"=== ko.unwrap($data['{primaryKeyPropertyName}'])"); CreateTemplates(context, placeholderEdit, true); Children.Add(placeholderEdit); placeholderEdit.Render(writer, context); writer.WriteKnockoutDataBindEndComment(); } else { var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetDataContextTypeFromDataSource(GetBinding(DataSourceProperty)); placeholder.SetValue(Internal.PathFragmentProperty, GetPathFragmentExpression() + "/[$index]"); placeholder.SetValue(Internal.ClientIDFragmentProperty, GetValueRaw(Internal.CurrentIndexBindingProperty)); Children.Add(placeholder); CreateRowWithCells(context, placeholder); placeholder.Render(writer, context); } } writer.RenderEndTag(); }
protected override void RenderContents(IHtmlWriter writer, RenderContext context) { // render the header head?.Render(writer, context); // render body if (!RenderOnServer) { writer.AddKnockoutForeachDataBind("dotvvm.evaluator.getDataSourceItems($data)"); } writer.RenderBeginTag("tbody"); // render contents if (RenderOnServer) { // render on server var index = 0; foreach (var child in Children.Except(new[] { head, emptyDataContainer })) { child.Render(writer, context); index++; } } else { // render on client if (InlineEditing) { var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), "$index")); placeholder.SetValue(Internal.ClientIDFragmentProperty, "'i' + $index()"); writer.WriteKnockoutDataBindComment("if", "ko.unwrap($parent.EditRowId) !== ko.unwrap($data[ko.unwrap($parent.PrimaryKeyPropertyName)])"); CreateTemplates(context.RequestContext, placeholder); Children.Add(placeholder); placeholder.Render(writer, context); writer.WriteKnockoutDataBindEndComment(); var placeholderEdit = new DataItemContainer { DataContext = null }; placeholderEdit.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), "$index")); placeholderEdit.SetValue(Internal.ClientIDFragmentProperty, "'i' + $index()"); writer.WriteKnockoutDataBindComment("if", "ko.unwrap($parent.EditRowId) === ko.unwrap($data[ko.unwrap($parent.PrimaryKeyPropertyName)])"); CreateTemplates(context.RequestContext, placeholderEdit, true); Children.Add(placeholderEdit); placeholderEdit.Render(writer, context); writer.WriteKnockoutDataBindEndComment(); } else { var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(GetPathFragmentExpression(), "$index")); placeholder.SetValue(Internal.ClientIDFragmentProperty, "'i' + $index()"); CreateRow(context.RequestContext, placeholder); Children.Add(placeholder); placeholder.Render(writer, context); } } writer.RenderEndTag(); }
/// <summary> /// Adds all attributes that should be added to the control begin tag. /// </summary> protected override void AddAttributesToRender(IHtmlWriter writer, RenderContext context) { TagName = WrapperTagName; if (!RenderOnServer) { writer.AddKnockoutForeachDataBind(GetDataSourceBinding().TranslateToClientScript(this, DataSourceProperty)); } base.AddAttributesToRender(writer, context); }
protected override void RenderContents(IHtmlWriter writer, RenderContext context) { if (Children.Count == 0) return; // render the header Children[0].Render(writer, context); // render body var dataSourceBinding = GetDataSourceBinding(); if (!RenderOnServer) { var expression = dataSourceBinding.TranslateToClientScript(this, DataSourceProperty); writer.AddKnockoutForeachDataBind(expression); } writer.RenderBeginTag("tbody"); // render contents if (RenderOnServer) { // render on server var index = 0; foreach (var child in Children.Skip(1)) { context.PathFragments.Push(dataSourceBinding.GetViewModelPathExpression(this, DataSourceProperty) + "[" + index + "]"); Children[index].Render(writer, context); context.PathFragments.Pop(); index++; } } else { // render on client for (var i = Children.Count - 1; i > 0; i--) { Children.RemoveAt(i); } var placeholder = new DataItemContainer(); placeholder.SetValue(Internal.IsDataContextBoundaryProperty, true); Children.Add(placeholder); CreateRow(context.RequestContext, placeholder); context.PathFragments.Push(dataSourceBinding.GetViewModelPathExpression(this, DataSourceProperty) + "[$index]"); placeholder.Render(writer, context); context.PathFragments.Pop(); } writer.RenderEndTag(); }
protected override void RenderContents(IHtmlWriter writer, RenderContext context) { if (Children.Count == 0) return; // render the header Children[0].Render(writer, context); // render body var dataSourceBinding = GetDataSourceBinding(); if (!RenderOnServer) { var expression = dataSourceBinding.GetKnockoutBindingExpression(); writer.AddKnockoutForeachDataBind(expression); } writer.RenderBeginTag("tbody"); // render contents if (RenderOnServer) { // render on server var index = 0; foreach (var child in Children.Skip(1)) { Children[index].Render(writer, context); index++; } } else { // render on client var placeholder = new DataItemContainer { DataContext = null }; placeholder.SetValue(Internal.PathFragmentProperty, JavascriptCompilationHelper.AddIndexerToViewModel(dataSourceBinding.GetKnockoutBindingExpression(), "$index")); Children.Add(placeholder); CreateRow(context.RequestContext, placeholder); placeholder.Render(writer, context); } writer.RenderEndTag(); }
/// <summary> /// Adds all attributes that should be added to the control begin tag. /// </summary> protected override void AddAttributesToRender(IHtmlWriter writer, RenderContext context) { TagName = WrapperTagName; if (!RenderOnServer) { writer.AddKnockoutForeachDataBind(GetDataSourceBinding().GetKnockoutBindingExpression()); } base.AddAttributesToRender(writer, context); }