我的问题是当我在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();
}
}