在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是空的!第二次我得到了正确的结果。希望你能澄清为什么有时会这样。谢谢
如果手动绑定Gridview-Datasource
而不使用dataset
,则必须在页面加载中始终绑定Gridview-Datasource
。
在web(asp.net(中,它不像Win应用程序,在没有页面加载事件的情况下,您无法将数据源绑定到网格。
As solution:
您可以使用Updatepanle
并将您的网格放入其中。结合后使用CCD_ 6。
有时只得到空格的最可能原因是,您所在的页面超出了搜索范围就会产生结果。
例如:您在未筛选结果的第10页,点击Search,
,只得到5页的结果。因此,您当前查看的页面(10(是空白的。
LINQ语句完成后,需要将GridView
重置回第一页。
第二个(可能的(问题是不能保证所有事件处理程序的顺序。(请参阅页面生命周期。(即,不能指望LinqDataSource_OnSelecting
或btnSearch_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
}