1

我的自动完成工作正常,因为我可以选择文本。但问题是我想获取所选项目的键值(Id)。所以我可以设置隐藏字段并使用服务器端。

这是我的网络方法代码:

[WebMethod]
    public List<string> AuotExtenderHotel(string hotelname)
    {
        DataSet ds = objHotelList.GetHotels(hotelname);
        List<string> result = new List<string>();
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            result.Add(dr["HotelName"].ToString());
        }
        return result;
    }

这是我的jQuery自动完成代码

<script type="text/javascript">
    $(document).ready(function () { HotelText(); });
    function HotelText() {
        $(".txthotel").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "WebService.asmx/AuotExtenderHotel",
                    data: "{'hotelname':'" + $('.txthotel').val() + "'}",
                    dataType: "json",
                    success: function (data) {

                        response(data.d);


                    },
                    error: function (result) {
                        alert("Error");
                    }


                });
            }
        });
    } 
</script>
4

2 回答 2

1

如果您的服务器没有返回除字符串数组之外的任何内容,您怎么能期望视图中的项目的 Id?我会修改 web 方法以返回一个 JSON 对象,其中包括 ID 和值对的对象。像

[{ "id": "1", "label": "MyFirstHotel", "value": "MyFirstHotel" },{ "id": "2", "label": "MySecondHotel", "value": "MySecondHotel" }]

于 2012-08-08T05:31:22.467 回答
0

我真的希望这已经弄清楚了,但以防万一......

文档状态选择了“选择”事件在选择项目时被解雇并将原型提供为存在select: function(event, ui) { ... }

在函数中放置一点console.log(ui)将 ui 对象显示为:

{
  item :
  {
    label : "the selected label",
    value : "the selected value"
  }
}
于 2012-08-08T04:38:15.613 回答