使用Sitecore SPEAK自动完成(文本框,单选按钮等..)

时间:2015-06-30 07:42:10

标签: sitecore sitecore-speak-ui

我们有Sitecore SPEAK页面,其中包含一组文本框,单选按钮和组合框。当用户为特定字段(姓氏)输入一些值时,我们需要自动填充或自动填充这些字段。

有谁知道我们如何使用Sitecore SPEAK做到这一点?

我们已经尝试过: 我们有一个cshtml文件,显示放置在用户查找部分下的SPEAK页面内的搜索记录。

当用户在lastname字段中输入一些值时,我们从数据库中检索数据并显示它。

this.on("change:input", this.users, this); // defined in the initialize method

//User function to load records
users: function () {
var input = this.get("input");

$.ajax({
 url: "/api/sitecore/Order/FindUsers",
 type: "POST",
 data: { input: input },
 context: this,
 success: function (data) {
    this.set("output", data); 
 }
});
}

//CSHTML code        
@using Sitecore.Mvc
@using Sitecore.Mvc.Presentation
@using Sitecore.Web.UI.Controls.Common.UserControls
@model RenderingModel
@{
    var rendering = Html.Sitecore().Controls().GetUserControl(Model.Rendering);
    rendering.Class = "sc-UserList";
    rendering.Requires.Script("client", "UserSearch1.js");

    rendering.GetString("input", "input");
    var htmlAttributes = rendering.HtmlAttributes;
}

<div @htmlAttributes >

    <p id="eventTitle"></p>
    <table class="table table-hover">
        <thead>
            <tr>
                <th>First Name</th>
                <th>Last Name</th>
            </tr>
        </thead>
        <tbody data-bind="foreach: output">
            <tr>
                <td><a data-bind="text: FirstName, click: function (data) { loadData('data-sc-id'); } "></td>
                <td data-bind="text: LastName"></td>
            </tr>
        </tbody>
    </table>

    <script>

        function loadData(attribute) {
            var matchingElements = [];
            var allElements = document.getElementsByTagName('*');
            for (var i = 0, n = allElements.length; i < n; i++) {
                if (allElements[i].getAttribute(attribute) !== null) {

                    if (allElements[i].accessKey == 'newitem1') {
                        allElements[i].innerHTML = "testtt";
                        allElements[i].innerText = "testtt";                        
                    }
                    matchingElements.push(allElements[i]);
                }
            }
            return matchingElements;
        }
    </script>
</div>

一旦用户点击用户查找部分中的特定记录,我们需要使用检索到的值填充或自动填充该页面中的其余字段,但我们无法这样做。

由于我们没有特定的id来捕获和设置值,我们设置了一个accessKey并找到了我们想要的控件,但是当我们设置innerHTML或innerText时它没有反映出来。

所以任何人都知道我们如何使用sitecore SPEAK进行自动完成?

1 个答案:

答案 0 :(得分:0)

相当广泛的问题,但查看文档和业务组件库,AdvancedComboBox可能是合适的。

https://doc.sitecore.net/speak/components/advancedcombobox

这可以在用户在组合框中输入时搜索项目。