簡體   English   中英

Gridview文本框過濾器-分頁不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM