0

配列をオートコンプリートソースに渡すWebサービスからオートコンプリートを提供する必要があります。

これが私の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();
    }

そして、これが私のjqueryajaxです。

$ .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

文字列のリスト以上のものを保持するカスタムデータソースの場合、表示する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

Success関数を次のように変更してみましたか?

 success: function (mydata) {

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

    }

.netがjsonオブジェクトを「d」というパラメーターでラップするのは私の経験です

于 2012-05-18T07:27:58.680 に答える
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 に答える