自定义GridViewTemplateColumn或ContentTemplate和EditTemplate?

时间:2017-10-03 17:20:28

标签: gridview dotvvm

是否可以创建一个内容并编辑要插入到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"

    });

1 个答案:

答案 0 :(得分:0)

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

  1. 创建一个继承自GridViewColumn

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

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

    1. 然后您需要DotvvmStartup中的register the control