0

我想在部分视图中使用剑道自动完成功能,并且我在一个视图中有很多,因此我必须动态获取参数,有什么方法可以在 Data fanction 中获取元素 ID?我 $(this).val() 但它不起作用 :( ,我应该使用什么剂量?请帮助我 :( tihs 是我的代码:

@(Html.Kendo().AutoComplete()
.Name("Employee" + (string)Session["fileid"]) 
.Placeholder("Employee Name ...")
.Filter(FilterType.StartsWith)
.DataSource(source =>
{
    source.Read(read =>
                 {
        read.Action(
                        "GetEmployeeName",
                         "Proceeds")
                         .Data(
                      "function onAdditionalData() {return { text:$(this).val() };}");
          })
                     .ServerFiltering(true);
})
.Events(e => { e.Open("onOpen");})
.Animation(true)
)
4

3 回答 3

0

如果您只需要控件的值而不关心控件本身,您可以这样做......

 function onAdditionalData(e) {
    return { text: e.filter.filters[0].value };
  }
于 2014-11-24T14:29:04.783 回答
0

这是一种对我有用的方法...

function onAdditionalData(e) {
    return { text: e.filter.filters[0].value };
}

此外,您可以更改控制器操作名称以添加字段的 ID...

read.Action("MyAction#" + id, "MyController").Data("onAdditionalData");

并以这种方式访问​​属性,允许您设置数据参数并在事件中使用它们:

function onAdditionalData(e) {
    var filterValue = e.filter.filters[0].value;
    var field = $(this.url.substring(this.url.indexOf('#')));
    return {
        text: filterValue,
        extradata1: field.data("extradata1"),
        extradata2: field.data("extradata2")
    };
}

在 GET 到服务器期间,浏览器将删除 URL 中的哈希标记。

我使用这种方法来传递列表源枚举和各种其他参数来创建一个非常灵活的 AJAX 接口。

于 2013-10-21T18:47:55.890 回答
0

感谢您的回复,我的视图上有许多自动完成控件,我只想为所有这些控件编写一个read.Action("GetCountries", "Proceeds").Data("onAdditionalData")函数,我必须得到此函数中每个选定的 AutoComplete 控件的 ID(用于获取用户输入的值并将其传递给指定的操作)。代码如下:

 @(Html.Kendo().AutoComplete()
 .Name("Employee" + (string)Session["fileid"]) 
 .Placeholder("Employee Name ...")
 .Filter(FilterType.StartsWith)
 .DataSource(source =>
  {
    source.Read(read =>
                 {
         read.Action(
                    "GetEmployeeName",
                     "Proceeds")
                     .Data("onAdditionalData");
      })
         .ServerFiltering(true);
  })
  .Animation(true)
 )

function onAdditionalData() {
var id = this.element.attr('id');//This line is my problem, because it does not
//work and I can not get the ID of the currently focused AutoComplete control.
id = '#' + id;
return {    text: $(id).val() };
}

这是动作部分:

    [System.Web.Mvc.HttpGet]
    public System.Web.Mvc.JsonResult GetEmployeeName(string text)
    {
    return Json(/*SOMEVALUES*/, System.Web.Mvc.JsonRequestBehavior.AllowGet);
    }

如果我不使用 .Data("onAdditionalData") 它将 null 作为参数发送给操作

于 2013-01-22T07:48:06.803 回答