3

私はasp.netとかみそりに不慣れです。productというフィールドで、データベースの結果をオートコンプリートできるようにしようとしています。

autocomplete.csモデルを作成しましたが、チケットコントローラーはすでにプロジェクトに含まれていたため、アクションを追加しました。次に、コードを追加したnew.cshtml。私は何が悪いのか迷っています。どんな助けでも大歓迎です。

問題は、new.cshtmlページにアクセスしても、jqueryが機能せず、textboxが何もしない場合です。それは私がjqueryを使って隠した隠しフィールドを台無しにします。現れます。

これがオートコンプリートです。cs

using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Configuration;

namespace HelpDesk.Models
{
public class PartNumber
{
    public string[] GetPartNumber()
    {
        List<string> partnumber = new List<string>();
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RASConnectionString"].ConnectionString))
        {
            con.Open();
            SqlCommand comm = new SqlCommand("select * from pltjones.dbo.inv_master", con);
            SqlDataReader reader = comm.ExecuteReader();

            while (reader.Read())
            {
                partnumber.Add(reader["part_no"].ToString());
            }
        }
        return partnumber.ToArray();
    }
}

次に、このアプリケーションですでに作成されているチケットコントローラーを示します。追加したもののスニペットを作成しています。

  public ActionResult Autocomplete(string term)
    {
        var items = new PartNumber().GetPartNumber();

        var filteredItems = items.Where(
            item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0
            );
        return Json(filteredItems, JsonRequestBehavior.AllowGet);
    }

これがかみそりのビューnew.cshtmlです

 <script type="text/javascript">
   $(document).ready(function () {
       $('#product')
    .each(function () {
        $(this).autocomplete({
            source: '@Url.Action("Autocomplete")'
        });
    });
   });

 <tr id="trEmail">
    <td colspan="2">
        <label for="product">Enter product: </label>
        <input type="text" name="product" id="product" />
</tr>
4

1 に答える 1

0

.each()使用しているオートコンプリートについてはまだ説明していませんが、一致するものが1つしかないため、いずれの場合も呼び出す必要はありません。代わりに、次のコマンドを使用してください。

$('#product').autocomplete(... etc ...)

また、誰かがアイテムを選択したときに何をするかについてのコードを提供していません。

$('#product').autocomplete({
    source: // as above
    select: function (event, ui) {
        $("#product").val(ui.item.value);
    }
});
于 2012-12-20T01:54:05.170 に答える