【发布时间】:2016-08-12 15:36:49
【问题描述】:
我正在尝试将 HiddenField 值传递给 WebMethod GetAutoCompleteData 以根据选定的搜索字段在文本框中启用自动完成。
我尝试使用代码隐藏传递 HiddenField 值,但没有成功。
javascript 代码没有问题。
注意:我尝试在另一种方法中使用 HiddenField 值,并且它有效,因此我确信 HiddenField 正在使用 JavaScript 代码获取值。
代码隐藏:
public static string hdnvalue { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
hdnvalue = hdnSearchParam.Value;
}
[WebMethod]
public static List<string> GetAutoCompleteData(string value)
{
string hiddenfiedlvalue = hdnvalue;
List<string> result = new List<string>();
string strConnString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand("select @hiddenfiedlvalue from Users where @hiddenfiedlvalue LIKE '%'+@SearchText+'%'", con))
{
con.Open();
cmd.Parameters.AddWithValue("@SearchText", value);
cmd.Parameters.AddWithValue("@hiddenfiedlvalue", hiddenfiedlvalue);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
result.Add(string.Format("{0}", hiddenfiedlvalue));
}
return result;
}
}
}
用于将下拉菜单中的选定值传递到 HiddenField 的代码:
<script type="text/javascript">
$(document).ready(function (e) {
$('.search-panel .dropdown-menu').find('a').click(function (e) {
e.preventDefault();
var param = $(this).attr("href").replace("#", "");
var concept = $(this).text();
$('.search-panel span#search_concept').text(concept);
$('[id$=hdnSearchParam]').val(param);
});
});
</script>
自动补全代码:
<script type="text/javascript">
$(function () {
SearchText();
});
function SearchText() {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/GetAutoCompleteData",
data: "{'value':'" + $('#txtSearch').val() + "'}",
dataType: "json",
success: function (data) {
if (data.d.length > 0) {
response($.map(data.d, function (item) {
return {
label: item.split('/')[0],
val: item.split('/')[1]
}
}));
}
else {
response([{ label: 'No Records Found', val: -1 }]);
}
},
error: function (result) {
alert("Error");
}
});
},
});
}
</script>
ASPX:
<asp:HiddenField ID="hdnSearchParam" runat="server" />
<div class="col-xs-8">
<div class="input-group">
<div class="input-group-btn search-panel">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span id="search_concept">Filter by</span> <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="#UserID">User ID</a></li>
<li><a href="#TypeName">User Type</a></li>
<li><a href="#UserName">User Name</a></li>
<li><a href="#FirstName">First Name</a></li>
<li><a href="#LastName">Last Name</a></li>
<li><a href="#Email">Email</a></li>
</ul>
</div>
<input type="hidden" name="search_param" value="all" id="search_param">
<asp:TextBox ID="txtSearch" CssClass="autosuggest form-control" runat="server"></asp:TextBox>
<span class="input-group-btn"></span>
</div>
</div>
【问题讨论】:
-
您是否尝试将隐藏文本“hdnSearchParam”的值传递给网络方法“GetAutoCompleteData”?
-
是的,我就是这个意思
-
为什么在下拉列表中使用 href?
-
获取选定的搜索字段
-
为什么不用html select?