[英]Gridview textbox filter - Paging NOT working
我在我的應用程序中工作,並使用帶有排序和篩選功能的gridview,用戶需要一個用於特定篩選器的篩選器,我使用的是javascript篩選器,並且它可以工作,但是當gridview有2個頁面或更多頁面時,它僅篩選第一個頁面。
這是javascript過濾器:
<!-- Gridview Filtro -->
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$('#<%=lblNoRecords.ClientID%>').css('display','none');
$('#<%=Button1.ClientID%>').click(function(e)
{
$('#<%=lblNoRecords.ClientID%>').css('display','none');
$("#<%=gvwSacBus_Docs.ClientID%> tr:has(td)").hide(); // Hide rows.
var iCounter = 0;
var sSearchTerm = $('#<%=TextBox1.ClientID%>').val(); //search value
if(sSearchTerm.length == 0) //all rows if textbox empty
{
$("#<%=gvwSacBus_Docs.ClientID%> tr:has(td)").show();
return false;
}
//Iterate
$("#<%=gvwSacBus_Docs.ClientID%> tr:has(td)").children().each(function()
{
var cellText = $(this).text().toLowerCase();
if(cellText.indexOf(sSearchTerm.toLowerCase()) >= 0) //Check matches
{
$(this).parent().show();
iCounter++;
return true;
}
});
if(iCounter == 0)
{
$('#<%=lblNoRecords.ClientID%>').css('display','');
}
e.preventDefault();
})
})
</script>
該應用程序適用於圖層,用於獲取數據:
public List<Cajas> Cajas_Buscar_CajaXCont(string clienteCodigo, string cajaContenido)
{
List<Cajas> ListCajasxContenido = new List<Cajas>();
string storedProcedure = "CAJAS_BUSCAR_CAJAXCONT";
using (DbConnection con = dpf.CreateConnection())
{
con.ConnectionString = conStr;
using (DbCommand cmd = dpf.CreateCommand())
{
cmd.Connection = con;
cmd.CommandText = storedProcedure;
cmd.CommandType = CommandType.StoredProcedure;
DbParameter param1 = cmd.CreateParameter();
param1.DbType = DbType.String;
param1.ParameterName = "CLIENTE_CODIGO";
param1.Value = clienteCodigo;
cmd.Parameters.Add(param1);
DbParameter param2 = cmd.CreateParameter();
param2.DbType = DbType.String;
param2.ParameterName = "CONTENIDO_CAJA";
param2.Value = cajaContenido;
cmd.Parameters.Add(param2);
con.Open();
using (DbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
try
{
//creamos un objeto de tipo Caja, y por c/ registro encontrado en la db, insertamos
Cajas cajaBus = new Cajas();
cajaBus.ClienteCodigo = dr["CLIENTE"].ToString();
cajaBus.CajaCodigo = dr["CODIGO CAJA"].ToString();
cajaBus.CajaNumero = Convert.ToInt16(dr["NUM"].ToString());
cajaBus.CajaContenido = dr["CONTENIDO"].ToString();
if (Convert.IsDBNull(dr["F.EMI"].ToString())) //para manejar los valores DBnull
{
cajaBus.FecEmisionDoc = Convert.ToDateTime("9999-01-01"); //de lo contrario c# no los podra interpretar
}
else
{
cajaBus.FecEmisionDoc = Convert.ToDateTime(dr["F.EMI"]);
}
ListCajasxContenido.Add(cajaBus);
}
catch (System.InvalidCastException)
{ }
catch (System.FormatException)
{ }
}
}
}
}
return ListCajasxContenido;
}
我將演示中的數據稱為:
protected void sacbus_Consul_Cajas_x_Cont()
{
gvwSacBus_Docs.DataSource = null;
gvwSacBus_Docs.DataBind();
gvwSacBus_Docs.DataSource = cajaBL.sacbus_Consul_Cajas_x_Cont(lbl_SacBus_CliCod.Text,
txt_SacBus_Criter.Text);
gvwSacBus_Docs.DataBind();
if (gvwSacBus_Docs.Rows.Count == 0)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "AlertScript", "alert('No Encontrado!');", true);
}
}
這是用於過濾的文本框
<asp:TableRow
ID="TableRow2"
runat="server"
BackColor="OrangeRed">
<asp:TableCell>
<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
</asp:TableCell>
<asp:TableCell>
<asp:Button ID="Button1" runat="server" Text="Button" />
</asp:TableCell>
<asp:TableCell>
<asp:Label ID="lblNoRecords" Text="No records to display" runat="server" ForeColor="red"></asp:Label>
</asp:TableCell>
</asp:TableRow>
這是我的網格(使用ItemTemplates)
<asp:GridView ID="gvwSacBus_Docs" runat="server" AutoGenerateColumns="false"
CssClass="mGrid" PagerStyle-CssClass="pgr"
AlternatingRowStyle-CssClass="alt" Font-Size="Small"
AllowPaging="true" PageSize="100" OnPageIndexChanging="gvwCajNuev_PageIndexChanging"
AllowSorting="true" OnSorting="gvwSacBus_Docs_Sorting">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID = "chkAll_cajas" runat="server" AutoPostBack="true"
OnCheckedChanged="chkAll_cajas_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkCaja" runat="server" AutoPostBack="true" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<a href="#" onclick="window.open('Cajas_Historial.aspx?cliCod= <%#Eval("ClienteCodigo").ToString()
+ "&cajCod=" + Eval("CajaCodigo").ToString()
+ "&cajNum=" + Eval("CajaNumero").ToString()
%> ','PrintMe','height=500px,width=1300px,scrollbars=1');">Hist</a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CLIENTE">
<ItemTemplate>
<asp:Label ID = "lblSacBus_CliCod" runat="server" Text='<%# Eval("ClienteCodigo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="COD.CAJA">
<ItemTemplate>
<asp:Label ID = "lblSacBus_CajCod" runat="server" Text='<%# Eval("CajaCodigo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
等等等
如您所見,我的問題是關於filterig的分頁,希望任何人都能幫助我。
最好的祝福...
服務器(ASP.Net)端的GridView
頁面,即使您存儲的proc獲取所有數據。 由於您是通過在客戶端隱藏記錄來進行過濾的,因此僅限於當前頁面。 我建議您在服務器端過濾數據(如果可以在存儲的proc / DB中進行過濾,則性能會更好),並將結果提供給GridView
以進行正確過濾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.