0

我需要从将数组传递到自动完成源的 Web 服务提供我的自动完成功能。

这是我的网络服务:

    public Filter[] getAutoComplete(string column)
    {
        List<Filter> list = new List<Filter>();

        DbAccess dbacc = new DbAccess();

          DataTable dt = dbacc.getColumnHeader(column);

          Filter _Filter = new Filter();


          if (column == "member_id")
          {
              foreach (DataRow row in dt.Rows)
              {
                  _Filter.memid = row["member_id"].ToString();
              }
          }
          else if (column == "lname")
          {
              foreach (DataRow row in dt.Rows)
              {
                  _Filter.memid = row["lname"].ToString();
              }
          }
          else if (column == "mname")
          {
              foreach (DataRow row in dt.Rows)
              {
                  _Filter.memid = row["mname"].ToString();
              }
          }
          else if (column == "fname")
          {
              foreach (DataRow row in dt.Rows)
              {
                  _Filter.memid = row["fname"].ToString();
              }
          }

        list.Add(_Filter);

        return list.ToArray();
    }

这是我的 jquery ajax:

$.ajax({

    url: "webservices/wbFilters.asmx/getAutoComplete",
    data: json,
    type: "POST",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (mydata) {

        $("#tags").autocomplete({
            source: mydata
        });

    }
});

我可以验证我的列表数组是否有值。我只是无法将它附加到我的自动完成功能。我读到我可以添加一个数组作为源,但我真的无法让它工作。

有人可以解释一下需要做什么才能使其正常工作吗?

4

3 回答 3

1

对于包含多个字符串列表的自定义数据源,您需要指定要显示的一个或多个属性。因此,您需要覆盖 _renderItem,如下所示:

$("#tags").autocomplete({
    source: myData
}).data("autocomplete")._renderItem = function(ul, item) {
    return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a>" + item.memid + "</a>" )
            .appendTo( ul );
};

有关详细信息,请参阅:http: //jqueryui.com/demos/autocomplete/#custom-data

于 2012-05-18T07:27:27.200 回答
0

这对我很有用,它遵循 jquery 的 api。

$("#Dialogs_ProjectID").autocomplete({
    source: function (request, response) {
        $.ajax({
            type: "POST",
            url: "Log.aspx/jQuery_Get_Autocomplete",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({
                columnName: "Project",
                startsWith: request.term
            }),
            success: function (data) {
                response($.map(data.d, function (item) {
                    return {
                        value: item
                    }
                }));
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
    }

});
于 2013-04-04T18:18:18.877 回答
0

您是否尝试过将 Success 功能更改为:

 success: function (mydata) {

        $("#tags").autocomplete({
            source: mydata.d
        });

    }

根据我的经验,.net 将 json 对象包装在一个名为“d”的参数中

于 2012-05-18T07:27:58.680 回答