2009-05-05 14 views
4

で検索し、読んでいただきありがとうございます。ASP.NET MVC:データ入力フォーム

私はデータ入力フォームを作成しています。私は、基準に合致するすべての従業員の従業員テーブルを検索し、正しい従業員を選択できるように結果を表示して、その結果を表示する方法を見つけようとしています。その従業員のIDをデータ入力フォームに戻して、レコードを完成させて保存することができます。

ありがとうございました

答えて

4

これを行う1つの方法は、jQuery autocompleteプラグインを使用する方法です。フォームを検索できるテキストボックスとIDを格納する隠しフィールドがあります。検索基準に基づいてJSONとして返される名前/ IDのペアのリストを取得するには、AJAX経由のオートコンプリートを使用します。オートコンプリートを設定してリストから強制的に選択させると、フィールド内に一致しないテキストは表示されなくなります。ユーザがリストから項目を選択すると、結果関数は関連するIDを隠しフィールドに格納します。フォームポストの隠しフィールドを使用して従業員のIDを取得します。

それは次のようになります。

ビュー

$('#searchBox').autocomplete('/Employees/Search', { 
    dataType: 'json', 
    max: 25, 
    minChars: 2, 
    cacheLength: 1, 
    mustMatch: true, 
    formatItem: function(data,i,max,value) { 
     return value; 
    }, 
    parse: function(data) { 
     var array = new Array(); 
     for (var i=0; i < data.length; i++) { 
      var datum = data[i]; 
      var display = datum.FirstName + ' ' + datum.LastName; 
      array[array.length] = { data: datum, value: display, result: display }; 
     } 
    } 
}); 

$('#searchBox').result(function(event, data, formatted) { 
    if (data) { 
     $('#employeeID').val(data.EmployeeID); 
    } 
}); 

$('form').submit(function() { 
    if (!$('#employeeID').val()) { 
     alert('You must select an employee before clicking submit!'); 
     return false; 
    } 
}); 


<input type='text' id='searchBox' /> 
<input type='hidden' id='employeeID' name='employeeID' /> 

コントローラー:ご返信用

public ActionResult Search(string q, int limit) 
{ 
    var query = db.Employees.Where(e => e.LastName.StartsWith(q)) 
          .OrderBy(e => e.LastName) 
          .Select(e => new 
           { 
            FirstName = e.FirstName, 
            LastName = e.LastName, 
            EmployeeID = e.EmployeeID 
          }); 
    if (limit > 0) 
    { 
     query = query.Take(limit); 
    } 

    return Json(query.ToList()); 
} 

public ActionResult SomeAction(int employeeID, ...) 
{ 
    ... 
} 
+0

ありがとうございます。 これは素晴らしい解決策のようです。あなたの例を試してみるのに少なくとも十分なJavaScriptを少しずつ読み上げます。それは私の頭の上の方法であるように見えるここheh!再度、感謝します。 –

+0

私はこの音が聞こえるほどシンプルで、asp.net mvcと.net言語だけを使って簡単に達成できると思っていましたが、デモやチュートリアルを終わらせるためにはJavaScriptがやりにくいようです。 –

+0

これはMVCのみを使用して行うことができますが、検索結果のビューを表示してから、元のビューに戻って選択した従業員のデータを入力する必要があります。あなたがjavascriptソリューションを使用して暮らすことができれば、より良いユーザーエクスペリエンスになります。あなたはJavaScriptが有効になっていない場合、あなたはそれを処理する方法について考えることがあります。ちょうど両方の場合に対応するのはあまり難しくありません。ただし、イントラネットアプリケーションの場合、ブラウザをより詳細に制御できるため、問題はない可能性があります。 – tvanfosson

0

私はLinqを使用することをお勧めします。

スコット区の例を考えてみましょうブログ........(LINQを使用して)データベースで検索するには、コントローラでは、このような

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

public static void GetEmployeeIDByLastName(string lastName) 
{ 

DataContext dc = new DataContext(); 

var queryResult = from q in dc.Employee 
      where q.EmployeeLastName.Equals(lastName) 
      select new { 
       EmployeeID = q.EmployeeID 
         } 

foreach(var empID in queryResult) 
     { 
      //pass the empID value back to the display 
     } 
} 
+0

感謝を。 私はコントローラーレベルで検索を行う方法を知っています、私の問題はユーザーインターフェイスです。私がデータを入力しているビューから、私は従業員を探して検索する方法を提供し、基準に一致するすべてのものから1つを選択し、選択した従業員のEmployeeIDを渡すデータ入力フォームに戻る必要があります。私はLINQをSQLに使用しています。 –

+0

ああ、私が誤解して申し訳ありませんが表示されます。残念なことに私自身は、ASP.Net MVCの使用について掘り下げ始めました。そのような新しいコンセプトです。スコット・グーのブログにもこれに関する多くの情報があります http://weblogs.asp.net/scottgu/search.aspx?q=mvc&o=Relevance あなたはいくつかの助けのためにそれを味わってみることができますが、私は本当にたくさんのことを示唆することはできません。 幸運にも、あなたの結果を投稿してください:-D – Goober

0

何か?

public ActionResult searchEmployees(string searchString) { 
     var employees = (from e in db.Employees 
           where e.Name.Contains(searchString) 
           orderby e.Name 
           select e); 
     return view("SearchResult", employees); 
} 

EDIT:あなたのコメントを読んでください。私が正しく理解していれば、あなたはそのIDだけに興味があります。それらをJavaScriptで使用していますか?これはAjaxコールのようなものですか?その場合は、配列、またはcsv文字列を返し、javascript呼び出しのIDを処理することができます。

+0

返信いただきありがとうございます。それは私が得たもののように見えます。試して、tvanfossonの例を理解しようとする。オートコンプリートはユーザーにとって非常に直感的です。あまりにも悪い私はちょうど開発者として始めて、実際に任意のjavascriptを知っていない、ちょっと私はC#を学んでいる! –

+0

私はhttp://tinyurl.com/ckp63nでblogpostをご覧になれます。 – Morph

関連する問題