我正在使用mvc3中的小表格,其中2个字段用于帐户代码,第二个用于帐户描述。
我使用jquery自动完成文本框从帐户代码字段中获取sql server 2008 r2数据库中的帐户代码和描述数据,但它不会在文本框中显示核心值。
下面是我的代码。
$(function () {
$("#AcCode").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Home/AutocompleteSuggestions", type: "POST", dataType: "json",
data: { term: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.split('-')[0], value: item.split('-')[1] }
}))
}
})
},
minLength: 1,
select: function (event, ui) {
if (ui.item) {
alert("You picked" + ui.item.label + "' with a value of " + ui.item.value);
$("#AcCode").val(ui.item.label),
$("#Descrip").val(ui.item.value);
}
}
});
});
它在帐户代码字段中显示说明,并且在说明字段中不显示任何内容。 帮我解决这个问题。我想在帐户代码字段中的描述字段和帐户代码中显示描述符。
从数据库中获取数据的功能 public List GetAutoCompDataDAL(string Acode) {
List<string> result = new List<string>();
using (SqlConnection con = new SqlConnection(CONNECTION_STRING))
{
using (SqlCommand cmd = new SqlCommand("select AcCode,Descrip from Account where AcCode like '%'+@AcCode+'%' order by AcCode asc", con))
{
con.Open();
cmd.Parameters.AddWithValue("@AcCode", Acode);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
result.Add(string.Format("{0}-{1}", dr["AcCode"].ToString(), dr["Descrip"].ToString()));
}
con.Close();
return result;
//return result1;
}
}
}
答案 0 :(得分:0)
您可以使用可以表示AcCode
和Descrip
的viewmodel(选项#1),或者如果您不想要额外的代码(附加类),则返回对象列表(选项) #2):
// option #1 if you want a viewmodel
public class AccountModel {
public string Code {get;set}
public string Description {get;set;}
}
// then use it just like the following:
//
// instead of this
// List<string> result = new List<string>();
// do this:
// option #1
// var results = new List<AccountModel>();
// option #2
var results = new List<object>();
while (dr.Read())
{
var code = dr["AcCode"].ToString();
var desc = dr["Descrip"].ToString();
results.Add(new { code , desc });
}
然后在你的最后一个using
子句之后将results
对象作为json返回:
public ActionResult AutocompleteSuggestions() {
return Json(results,JsonRequestBehavior.AllowGet);
}
然后而不是做:
$.ajax({
url: "/checkout/AutocompleteSuggestions", type: "POST", dataType: "json",
data: { term: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.split('-')[0], value: item.split('-')[1] }
}))
}
})
你可以参考每个领域:
$.ajax({
url: "/checkout/AutocompleteSuggestions", type: "POST", dataType: "json",
data: { term: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.code, value: item.desc }
}))
}
})