如何在 Web 部件中保存自定义表单控件输入数据?
How to save custom form control input data in web part?
我按照 kentico 文档中的 "Developing Custom Form Control" 构建了一个自定义列表框。我在代码后面动态添加了列表框,而不是直接在代码前面(ascx)添加它。我在我的一个 Web 部件上使用列表框,当我选择多个项目时一切正常。但是,当我单击以编辑 Web 部件时,所有选定的项目都消失了,列表框返回到其原始形式(未选定项目)。因此,我想知道kentico如何在web part中保存表单控件的旧数据。
在下面的代码中,我用一个简短的版本重新创建了我的场景。我在面板下动态添加列表框。
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 应该 return 一些值存储在数据库中。在 setter 中,您应该初始化列表框,填充数据并根据来自数据库的 value 进行选择。
基本上,表单控件本身不会将数据保存到数据库中。表单控件附加到某个表单,表单将数据保存到数据库中。查看 documentation regarding custom form controls。
我按照 kentico 文档中的 "Developing Custom Form Control" 构建了一个自定义列表框。我在代码后面动态添加了列表框,而不是直接在代码前面(ascx)添加它。我在我的一个 Web 部件上使用列表框,当我选择多个项目时一切正常。但是,当我单击以编辑 Web 部件时,所有选定的项目都消失了,列表框返回到其原始形式(未选定项目)。因此,我想知道kentico如何在web part中保存表单控件的旧数据。
在下面的代码中,我用一个简短的版本重新创建了我的场景。我在面板下动态添加列表框。
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 应该 return 一些值存储在数据库中。在 setter 中,您应该初始化列表框,填充数据并根据来自数据库的 value 进行选择。
基本上,表单控件本身不会将数据保存到数据库中。表单控件附加到某个表单,表单将数据保存到数据库中。查看 documentation regarding custom form controls。