使用Kentico 9

时间:2016-08-26 20:55:03

标签: kentico

我在整个网络上搜索过,但我找不到任何能够揭示正确方法的好主题。

我有一个非常简单的网站,我使用Kentico 9 CMS开发。此网站仅包含两个子页面和一个标题,用于在这些子页面之间导航。

" Home"子页面包含一个自定义表单,它与SQL表格保持连接,每次按下提交时都会填充某些数据。

enter image description here

另一方面,另一页,使用自定义Web部件显示存储的数据,自定义Web部件使用 BizFormItemProvider 连接到数据库,此对象用作用于绑定控件中数据的图层。

enter image description here

现在是我的观点。如果你看到,有一个按钮来编辑"编辑"某一行,我的意图是重定向到" Home" (包含表单)并通过QueryString发送尝试编辑的行的ID。

我无法理解如何使用ID 重新填写表单及其数据。

也许是因为我之前从未使用过CMS,我正在寻找纯ASP.NET等开发,但它可能不是正确的。

2 个答案:

答案 0 :(得分:2)

定制

鉴于您的解决方案使用自定义表单来输入数据,以及用于列出存储数据的自定义Web部件,您需要使用自定义处理数据编辑的解决方案。

在主页的自定义webpart中,在加载事件中,您可以检索表单数据并在表单控件上设置值。

protected void Page_Load(object sender, EventArgs e)
{
    // Ensure that the form is not being posted back,
    // to prevent entered data from being overwritten
    if(!IsPostBack)
    {
        // Get the form item ID from the query string
        var personId = QueryHelper.GetInteger("personId", 0);
        if(personId > 0)
        {
            // Get the biz form item, and set form control values
            var bizFormItem = BizFormItemProvider.GetItem(personId, "customFormClassName");
            txtFirstName.Text = bizFormItem.GetStringValue("FirstName", string.Empty);
        }
    }
}

同样,当点击提交时,您可以使用新数据更新现有表单项

protected void btnSubmit_OnClick(object sender, EventArgs e)
{
    // Get the form item ID from the query string
    var personId = QueryHelper.GetInteger("personId", 0);
    if(personId > 0)
    {
        // Retrieve the existing biz form item,
        // and update it from the form control values
        var bizFormItem = BizFormItemProvider.GetItem(personId, "customFormClassName");
        bizFormItem.SetValue("FirstName", txtFirstName.Text);
        bizFormItem.Update();
    }
    else
    {
        // Your code for inserting a new form item...
    }
}

Kentico方式

您应该考虑使用Kentico表单引擎来完成此任务。不使用自定义表单输入数据,而是使用内置的在线表单 webpart。

The benefits are numerous,例如:

  • 能够通过CMS设置表单布局,并使用其他布局
  • 向表单提交者发送自动确认电子邮件,以及向管理员发送通知电子邮件

要完成任务,您可以customise the On-line form webpart支持加载现有数据。 在bizform.ascx.cs文件中,将代码添加到SetupControl方法:

protected void SetupControl()
{
    if (StopProcessing)
    {
        // Existing code...
    }
    else
    {
        // Existing code...

        // Get the form item ID from the query string
        var personId = QueryHelper.GetInteger("personId", 0);
        if(personId > 0)
        {
            // Get the biz form item, and set form control values
            var bizFormItem = BizFormItemProvider.GetItem(personId, "customFormClassName");
            if(bizFormItem != null)
            {
                // Set the item ID
                viewBiz.ItemID = bizFormItem.ItemID;
            }
        }
    }
}

一旦设置了ItemID属性,这将自动将表单切换为编辑模式,而不是插入模式。单击“提交”按钮将保存对现有表单项的更改。 您无需担心代码中的验证,插入数据仍然有效。

答案 1 :(得分:1)

这是您在表单应用程序中使用的Kenticos的联系表单,还是自定义表单?如果是自定义表单,您可以使用包含ID的链接创建转换。如果是商业表格,您仍然可以在页面类型中创建转换(创建新的页面类型并选择“页面类型只是一个没有自定义字段的容器”),然后写一个custom query来获取商业表单数据,并使用转发器显示该转换的数据。