【问题标题】:Custom GridViewTemplateColumn or ContentTemplate and EditTemplate?自定义 GridViewTemplateColumn 或 ContentTemplate 和 EditTemplate?
【发布时间】:2018-03-14 23:25:28
【问题描述】:

是否可以创建要插入到 GridViewTemplateColumn 中的内容和编辑模板,以便人们可以重复使用它而不是将模板重复插入到其 html 中?

我有大约 15 个列,它们都需要类似的功能(在内容阶段有文本,在编辑时有一个多行文本框),并且使用模板列可以正常工作。

但是,如果我想更改模板,我需要全部更改。

从创建自定义控件到扩展模板列,我已经尝试了所有我能想到的方法,但我可能对 DotVVM 了解得不够多。

任何帮助将不胜感激。

解决了!解决方案如下。

public class MultiLineTextColumn : GridViewTextColumn
{

    public override void CreateEditControls(IDotvvmRequestContext context, DotvvmControl container)
    {
        var textBox = new TextBox();
        textBox.FormatString = FormatString;
        textBox.ValueType = ValueType;
        textBox.SetBinding(TextBox.TextProperty, GetValueBinding(ValueBindingProperty));

        textBox.Type = TextBoxType.MultiLine;

        container.Children.Add(textBox);
    }
}

在 DotvvmStartup.cs 中

    config.Markup.Controls.Add(new DotvvmControlConfiguration
    {
        TagPrefix = "cc",
        Namespace = "Project.Controls",
        Assembly = "Project"

    });

【问题讨论】:

  • 我认为使用自定义控件可能是正确的方法。你能告诉我们你尝试了什么吗?我宁愿不发布整个解决方案。

标签: gridview dotvvm


【解决方案1】:

您可以创建自己的列类型。

  1. 创建一个继承自GridViewColumn的类。

  2. 覆盖CreateControlsCreateEditControlsCreateInsertControls并在单元格内构建控制树。

如果要制作多行编辑单元格,可以修改default GridViewTextColumn - 只需在CreateEditControls 方法中将Type 设置为MultiLine

  1. 那你需要register the control in DotvvmStartup

【讨论】:

  • 感谢您的帮助!我已经更新了主帖。还想指出,我认为文档已经过时,或者配置可用的方法对我来说可能与列出的不同。
猜你喜欢
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多