Kentico 如何在web部件中保存自定义表单控件输入数据?

Kentico 如何在web部件中保存自定义表单控件输入数据?,kentico,form-control,Kentico,Form Control,我遵循kentico文档中的“开发自定义表单控件”,并构建了一个自定义列表框。我在代码后面动态添加了列表框,而不是直接在代码前面(ascx)添加它。我在我的一个web部件上使用列表框,当我选择多个项目时,一切都很好。但是,当我单击编辑web部件时,所有选定的项目都将消失,列表框将恢复为其原始形式(未选择任何项目)。因此,我想知道kentico如何在web部件中保存表单控件的旧数据 在下面的代码中,我用一个简短的版本重新创建了我的场景。我动态地将列表框添加到面板下 protected void E

我遵循kentico文档中的“开发自定义表单控件”,并构建了一个自定义列表框。我在代码后面动态添加了列表框,而不是直接在代码前面(ascx)添加它。我在我的一个web部件上使用列表框,当我选择多个项目时,一切都很好。但是,当我单击编辑web部件时,所有选定的项目都将消失,列表框将恢复为其原始形式(未选择任何项目)。因此,我想知道kentico如何在web部件中保存表单控件的旧数据

在下面的代码中,我用一个简短的版本重新创建了我的场景。我动态地将列表框添加到面板下

protected void EnsureItems()
  {
      // Create item and list box
      ListBox tab = new ListBox(); 

      ListItem item = new ListItem();
      item.Text = "test";

      tab.Items.Add(item);
      panel.Controls.Add(tab);
  }


protected void Page_Load(object sender, EventArgs e)
  {
      EnsureItems();
  }

每个表单控件应继承自FormEngineUserControl。Kentico利用Value属性来存储和检索数据库中的值。以下是一个例子:

public override object Value
{
    get
    {
        return listBox.SelectedValue;
    }

    set
    {
        listBox.SelectedValue = ValidationHelper.GetString(value, string.Empty);
    }
}

基本上,getter应该返回一些要存储在数据库中的值。在setter中,您应该初始化列表框,填充数据并根据来自数据库的值进行选择。

基本上,表单控件本身不会将数据保存到数据库中。表单控件附加到某个表单,表单将数据保存到数据库中。看看这本书

谢谢你的帮助。我只知道Value方法的setter实际上是从我用来检索旧数据的数据库中提取出来的