[英]jquery UI autocomplete with asp.net c#
我正在嘗試通過使用jquery和c#從數據庫中獲取值來進行自動完成。
這是我的HTML表格
<form action="Default.aspx" method="post">
<fieldset>
<p class="ui-widget">
<label for="state">State (abbreviation in separate field):
</label>
<input type="text" id="state" name="state" />
<input readonly="readonly" type="text" id="abbrev" name="abbrev" maxlength="2" size="2"/>
</p>
<input type="hidden" id="state_id" name="state_id" />
<p class="ui-widget">
<label for="state_abbrev">State (replaced with abbreviation):
</label>
<input type="text" id="state_abbrev" name="state_abbrev" />
</p>
<p>
<input type="submit" name="submit" value="Submit" />
</p>
</fieldset>
</form>
而我的JQuery文件是這個
$(function () {
$('#abbrev').val("");
$("#state").autocomplete({
source: "states.aspx",
minLength: 2,
select: function (event, ui) {
$('#state_id').val(ui.item.id);
$('#abbrev').val(ui.item.abbrev);
}
});
$("#state_abbrev").autocomplete({
source: "states_abbrev.aspx",
minLength: 2
});
});
.cs文件是這個
JavaScriptSerializer serializer;
public class State {
public int id;
public string value;
public string abbrev;
}
protected void Page_Load(object sender, EventArgs e) {
serializer = new JavaScriptSerializer();
Response.Write(JSONData(Request.QueryString["Term"]));
}
private string JSONData(string term) {
ArrayList stateArray = new ArrayList();
int index = 0;
SqlConnection objConn = new SqlConnection("YOUR-CONNECTION-STRING-HERE");
DataSet myds = new DataSet("States");
objConn.Open();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT id, state, abbrev FROM states WHERE state like \'%\' + @ac_term + \'%\'", objConn);
adapter.SelectCommand.Parameters.Add("@ac_term", SqlDbType.VarChar);
adapter.SelectCommand.Parameters["@ac_term"].Value = term;
adapter.Fill(myds, "States");
foreach (DataRow dr in myds.Tables[0].Rows) {
State st = new State();
st.id = dr["id"].ToString();
st.value = dr["state"].ToString();
st.abbrev = dr["abbrev"].ToString();
stateArray.Add(st);
}
objConn.Close();
return serializer.Serialize(stateArray);
}
但仍然在這一行中即時獲取錯誤
adapter.Fill(myds, "States");
誰能幫我這個忙...
我相信問題出在這一行:
adapter.SelectCommand.Parameters["@ac_term"].Value = term;
錯誤告訴您此參數沒有值。 您需要確保該術語等於某項,或者更改存儲過程以不依賴此參數。
從您的代碼看來,傳遞給JSONData函數的變量來自Querystring,您應該進行測試以確保此字符串符合您的期望(即,不是null或未定義,或者其他不期望的東西)。
一個簡單的方法是:
if (string.IsNullOrEmpty(term) || term == "undefined") return;
如果遇到空值或未定義的查詢字符串,這將導致函數返回。
乍看之下,似乎是\\'%\\'的問題-不要使用轉義符-只是:SELECT id,state,abbrev FROM狀態在諸如'%'+ @ac_term +'%'之類的狀態
干杯,伊萬
嘗試考慮NULL值:
SqlDataAdapter adapter = new SqlDataAdapter(@"SELECT id, state, abbrev FROM states WHERE @ac_term IS NULL OR state LIKE '%' + ISNULL(@ac_term,'') + '%'", objConn);
(使用@消除轉義字符)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.