並感謝您的閱讀。ASP.NET MVC:在數據輸入表中搜索
我正在構建一個數據輸入表單。我試圖找出一種方法讓用戶提供一個條件(例如姓氏),在員工表中搜索符合條件的所有員工,以可選擇正確員工的方式顯示結果,並通過該員工的ID返回到數據輸入表格,以便他們可以完成記錄並保存。
謝謝
並感謝您的閱讀。ASP.NET MVC:在數據輸入表中搜索
我正在構建一個數據輸入表單。我試圖找出一種方法讓用戶提供一個條件(例如姓氏),在員工表中搜索符合條件的所有員工,以可選擇正確員工的方式顯示結果,並通過該員工的ID返回到數據輸入表格,以便他們可以完成記錄並保存。
謝謝
這樣做的一種方法是使用jQuery autocomplete插件。在您的表單上有允許搜索的文本框和存儲該ID的隱藏字段。根據搜索條件,通過AJAX使用自動完成獲取作爲JSON返回的名稱/ ID對列表。將自動完成設置爲強制從列表中進行選擇 - 這將禁止該字段中的任何不匹配的文本。當用戶從列表中選擇一個項目時,結果函數會將關聯的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, ...)
{
...
}
我建議使用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
}
}
像這樣的事情在控制器(使用LINQ)在數據庫中進行搜索?
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);
}
編輯:只要閱讀你的意見,如果我理解正確,你只對id感興趣。你在JavaScript中使用這些,這是一種Ajax調用?在這種情況下,您可能想要返回數組或csv字符串,並在javascript調用中處理id。
感謝您的答覆。這看起來像我得到的。試着去了解tvanfosson的例子。自動完成聽起來對用戶來說非常直觀。太糟糕了我剛剛開始作爲一個開發人員,並不真正知道任何JavaScript,嘿,我只是學習C#! – 2009-05-05 22:29:23
感謝您的答覆。 我知道如何在控制器級別進行搜索,我的問題是用戶界面。從我輸入數據的角度來看,我需要提供一種方法來搜索員工,從符合條件的所有匹配中選擇一個,然後返回到傳遞選定員工的EmployeeID的數據輸入表單。我現在正在使用LINQ to SQL。 – 2009-05-05 21:00:36
啊我看到了,對不起,我誤解了。不幸的是,我自己纔剛剛開始鑽研使用ASP.Net MVC,因爲它是一個新概念。 Scott Gu的博客也有很多關於這方面的信息。 http://weblogs.asp.net/scottgu/search.aspx?q=mvc&o=Relevance 你可以嘗試篩選它以獲得一些幫助,但除此之外,我害怕我不能提出其他建議。 祝你好運,一定要發佈你的結果:-D – Goober 2009-05-05 21:05:00