DotVVM - значения привязки в пользовательских элементах управления только для кода - PullRequest
0 голосов
/ 26 марта 2019

У меня есть идея расширить элемент управления GridView с помощью ComboBox и DataPager (чтобы не повторять один и тот же код на всех страницах), но если я создаю ComboBox внутри унаследованного MyGridView, я не могу заполнить их данными. Что я должен сделать для правильной привязки данных? Можно ли использовать элементы управления таким образом?

Я унаследовал MyGridView: GridView и создал защищенное свойство ComboBox. В методе OnInit я устанавливаю ComboBox.DataSource = new List () {10,20,30}. В методе OnRender я добавил ComboBox.Render (...)

public class MyGridView : GridView
{
    protected int PageSize { get; set; } = 20;

    protected readonly List<int> pageSizeOptions = new List<int>() { 20, 50, 100 };

    protected ComboBox PageSizeComboBox { get; set; }

    protected override void OnInit(IDotvvmRequestContext context)
    {
        PageSizeComboBox = new ComboBox();
        PageSizeComboBox.DataSource = pageSizeOptions;
        PageSizeComboBox.SelectedValue = PageSize;
        PageSizeComboBox.SelectionChanged = () => new Task(UpdatePageSize);
    }

    public override void Render(IHtmlWriter writer, IDotvvmRequestContext context)
    {
        base.Render(writer, context);
        PageSizeComboBox.Render(writer, context);          
    }

...

Элемент управления MyGridView правильно отображает GridView, но ComboBox отображается пустым (<select data-bind="valueAllowUnset: true"></select>)

...