正在从WebService填充自动完成功能
Populating AutoComplete from WebService
我已经使用Web服务在C#.net中实现了JQuery自动完成。
这是asp代码:
<div class="row">
<div class="span4">
<h3>
Manage Season</h3>
</div>
</div>
<div class="row">
<div class="span2">
<p>
<label class="control-label" for="TeamName">
Team Name:</label></p>
</div>
<div class="span3">
<asp:TextBox ID="TeamNameTextBox" runat="server" CssClass="searchinput"></asp:TextBox>
<asp:Button ID="AddTeamButton" CssClass="btn btn-primary" runat="server" Text="Add"
OnClick="AddTeamButton_Click" />
</div>
<script type="text/javascript">
$(document).ready(function () {
$(".searchinput").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "PredictiveSearch.asmx/GetAllPredictions",
data: "{'keywordStartsWith':'" + request.term + "'}",
dataType: "json",
async: true,
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Due to unexpected errors we were unable to load data");
}
});
},
minLength: 1
});
});
</script>
以及c#网络服务:
[System.Web.Script.Services.ScriptService]
public class PredictiveSearch : System.Web.Services.WebService
{
[WebMethod]
public IList<string> GetAllPredictions(string keywordStartsWith)
{
//TODO: implement real search here!
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["RaiseFantasyLeagueConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("[dbo].[findEnglishTeams]", conn);
cmd.CommandType = CommandType.StoredProcedure;
string searchTerm = keywordStartsWith;
SqlParameter searchTermParam = new SqlParameter("@searchterm", searchTerm);
cmd.Parameters.Add(searchTermParam);
IList<string> output = new List<string>();
conn.Open();
SqlDataReader dReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (dReader.HasRows)
{
while (dReader.Read())
{
output.Add(dReader["englishTeamName"].ToString());
}
return output;
}
else
{
return output;
}
}
}
我需要获得我在下拉列表中填充的值的ID,这怎么可能?
由于您在客户端使用Ajax请求填充此内容,因此您必须:
- 通过将所选值写入一个html输入type=hidden元素,并在表单返回时在服务器端读取它来获取所选值。只是不要忘记通过添加
runat="server"
使input type=hidden
元素成为服务器端控件 - 通过另一个Ajax请求提交所选的值
-
使用Request.Params集合读取选定的值,并使用列表框的名称作为键。类似于:
var selectedValues = Request.Params["select_box_name"];
您将无法简单地使用ListBox.SelectedValue
,因为在ViewState
中找不到值,因为您是通过Ajax填充它的。
我会选择选项3…
希望这样的东西能更好地满足您的需求
相关文章:
- Jquery表单插件未显示成功功能
- 成功:功能(数据);不使用命名函数
- 只有在前一个功能成功完成的情况下,我才能正确地启动此功能
- JQuery AJAX没有't获得成功回调功能
- 谷歌登录成功功能在我阻止第三方cookie时没有任何作用
- 成功提交 Web 表单后,Javascript 重置功能将不起作用
- 骨干.js:Save的成功功能根本不起作用
- 如何触发一个新的 X-Editable 从当前功能的成功函数中打开
- ajax内部访问类功能成功
- 如何检查PHP邮件功能是否成功,然后运行一个javascript代码
- Extjs 4上传成功功能没有反应
- 将显示功能应用于ajax成功创建的元素
- 包括成功/失败jQuery / Ajax功能
- 列表框上的EventListener在物品掉落后不再工作[所有javascript功能在成功掉落后停止]
- AJAX成功服务器端功能
- 为什么我不能用这个.贴出成功功能
- Gulp通知全局成功功能
- 如何添加成功功能?
- “成功”功能是如何运作的,我该如何模仿它
- AJAX的成功功能是有效的,但文件是't正在运行