在linqDataSource上搜索有时需要单击2次

本文关键字:单击 2次 linqDataSource 搜索 | 更新日期: 2023-09-27 18:07:59

我有一个带有linqdatasource和gridView的页面。有几个文本框可用于输入搜索条件。LinqDataSource_OnSelecting事件通过以下方式过滤查询:

var query = from d in db.PersonData 
            select d;
if (textBoxName.Text != "")
    var query = query.where(p => p == textBoxName.Text); 
if (textBoxPhone.Text != "")
    var query = query.where(p => p == textBoxPhone.Text); 
e.Result = query;

btnSearch_Click事件具有以下代码:

gridView.DataBind();

它大多数时候都很好用,但有时我不得不点击两次搜索按钮才能看到结果。我第一次点击搜索时,gridView是空的!第二次我得到了正确的结果。希望你能澄清为什么有时会这样。谢谢

在linqDataSource上搜索有时需要单击2次

如果手动绑定Gridview-Datasource而不使用dataset,则必须在页面加载中始终绑定Gridview-Datasource

在web(asp.net(中,它不像Win应用程序,在没有页面加载事件的情况下,您无法将数据源绑定到网格。

As solution:您可以使用Updatepanle并将您的网格放入其中。结合后使用CCD_ 6。

有时只得到空格的最可能原因是,您所在的页面超出了搜索范围就会产生结果。

例如:您在未筛选结果的第10页,点击Search,,只得到5页的结果。因此,您当前查看的页面(10(是空白的。

LINQ语句完成后,需要将GridView重置回第一页。

第二个(可能的(问题是不能保证所有事件处理程序的顺序。(请参阅页面生命周期。(,不能指望LinqDataSource_OnSelectingbtnSearch_Click先启动,并且Click处理程序中有DataBind消除btnSearch_Click事件处理程序(或将其留空(并使用LinqDataSource.OnSelected,它肯定会在LinqDataSource.OnSelecting:之后激发

protected void LinqDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e) {
  gridView.DataBind();
  gridView.PageIndex = 0;  // back to beginning when searching
}