我有一个自动完成的jQuery gridview
,它会在我输入textbox
时进行过滤。我想在行中的任何位置选择并将行Id传递给会话。
我该怎么做?下面是我的代码。
JavaScript的:
$("#popup").ready(function () {
GetCustomers(1);
});
$("[id*=txtSearch]").live("keyup", function () {
GetCustomers(parseInt(1));
});
$(".Pager .page").live("click", function () {
GetCustomers(parseInt($(this).attr('page')));
});
function SearchTerm() {
return jQuery.trim($("[id*=txtSearch]").val());
};
function GetCustomers(pageIndex) {
$.ajax({
type: "POST",
url: "Home.aspx/GetCustomers",
data: '{searchTerm: "' + SearchTerm() + '", pageIndex: ' + pageIndex + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
}
var row;
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var customers = xml.find("Customers");
if (row == null) {
row = $("[id*=gvCustomers] tr:last-child").clone(true);
}
$("[id*=gvCustomers] tr").not($("[id*=gvCustomers] tr:first-child")).remove();
if (customers.length > 0) {
$.each(customers, function () {
var customer = $(this);
//$("td", row).eq(0).html($(this).find("Id").text());
$("td", row).eq(0).html($(this).find("Patient_First_Name").text());
$("td", row).eq(1).html($(this).find("Patient_DOB").text());
$("td", row).eq(2).html($(this).find("Patient_Home_Phone").text());
$("td", row).eq(3).html($(this).find("Patient_Account_No").text());
$("[id*=gvCustomers]").append(row);
row = $("[id*=gvCustomers] tr:last-child").clone(true);
});
var pager = xml.find("Pager");
$(".Pager").ASPSnippets_Pager({
ActiveCssClass: "current",
PagerCssClass: "pager",
PageIndex: parseInt(pager.find("PageIndex").text()),
PageSize: parseInt(pager.find("PageSize").text()),
RecordCount: parseInt(pager.find("RecordCount").text())
});
$(".ContactName").each(function () {
var searchPattern = new RegExp('(' + SearchTerm() + ')', 'ig');
$(this).html($(this).text().replace(searchPattern, "<span class = 'highlight'>" + SearchTerm() + "</span>"));
});
} else {
var empty_row = row.clone(true);
$("td:first-child", empty_row).attr("colspan", $("td", row).length);
$("td:first-child", empty_row).attr("align", "center");
$("td:first-child", empty_row).html("No records found for the search criteria.");
$("td", empty_row).not($("td:first-child", empty_row)).remove();
$("[id*=gvCustomers]").append(empty_row);
}
};
aspx: -
<asp:GridView ID="gvCustomers" CssClass="gridview" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvCustomers_RowDataBound">
<Columns>
<%--<asp:BoundField DataField="Id" HeaderText="Id" />--%>
<asp:BoundField DataField="Patient_First_Name" HeaderText="First Name" />
<asp:BoundField DataField="Patient_DOB" HeaderText="Dob" />
<asp:BoundField DataField="Patient_Home_Phone" HeaderText="Phone Number" />
<asp:BoundField DataField="Patient_Account_No" HeaderText="Account No" />
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" Text="test" NavigateUrl='<%# Eval("Patient_First_Name", "show.aspx?ID={0}") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
C#: -
protected void gvCustomers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';this.style.backgroundColor='#81DAF5';";
e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';this.style.backgroundColor='#FFFFFF';";
e.Row.ToolTip = "Click to select row";
Page.ClientScript.RegisterForEventValidation(new System.Web.UI.PostBackOptions(this.gvCustomers, "Select$" + e.Row.RowIndex.ToString()));
}
}