使用文本框ASP.NET过滤gridview

时间:2015-09-24 02:28:46

标签: c# asp.net gridview webforms textbox

我的问题是当我在textbox上输入时,每次输入时页面会反复加载,因此“llenarTabla”方法会收到一个空的string和当我只想要textbox

中的类似记录时,会带来数据库中的所有记录

HTML代码

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<table>
    <tr>
        <td>Buscar descripcion:
        </td>
        <td>
            <asp:TextBox ID="txtBuscar" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:Button ID="btn" runat="server" OnClick="btn_Click" />
        </td>
    </tr>
</table>
<asp:GridView ID="grdProductos" runat="server" AutoGenerateColumns="false" OnRowCommand="grdProductos_RowCommand">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:ImageButton ID="btnLink" runat="server" ImageUrl="~/Styles/link.png" CommandArgument='<%#Eval("t1")%>'
                    CommandName="btnLink" Width="25" Height="25" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="# de Subasta" DataField="t1" />
        <asp:BoundField HeaderText="Nombre" DataField="t2" />
        <asp:BoundField HeaderText="Descripcion" DataField="t3" />
    </Columns>
</asp:GridView>

<script type="text/javascript" language="javascript">
    function doClick(btn, e) {
        var key;

        if (window.event)
            key = window.event.keyCode;     //IE
        else
            key = e.which;     //firefox

        if (key) {

            var btn = document.getElementById(btn);
            if (btn != null) { 
                btn.click();
                //return false;
            }
        }
    }

代码

public partial class ListaSubastas : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        txtBuscar.Attributes.Add("onKeyPress",
          "doClick('" + btn.ClientID + "',event)");
    }

    public void llenarTabla(string b)
    {
        List<object> lista = new List<object>();
        SubastasBLL subastasBLL = new SubastasBLL();
        lista = subastasBLL.consultarSubasta(b);
        grdProductos.DataSource = lista;
        grdProductos.DataBind();

    }

    protected void btn_Click(object sender, EventArgs e)
    {
        llenarTabla(txtBuscar.Text);
    }
}

BLL代码

public class SubastasBLL
{
    public List<object> consultarSubasta(string buscar)
    {
        SubastasDAL subastasDAL = new SubastasDAL();
        return subastasDAL.consultarSubasta(buscar);
    }
}

DAL代码

public class SubastasDAL 

    public List<object> consultarSubasta(string buscar)
    {
        AmacdisEntities context = new AmacdisEntities();

        var subasta = from tSubasta in context.Auction
                      where tSubasta.Description.Contains(buscar)
                      select new
                      {
                          t1 = tSubasta.AuctionId,
                          t2 = tSubasta.ProductName,
                          t3 = tSubasta.Description
                      };
        return subasta.AsEnumerable<object>().ToList();
    }
}

0 个答案:

没有答案