GridView where子句

时间:2011-04-08 14:18:08

标签: asp.net data-binding gridview

我有一个asp页面,我使用gridview来显示一些东西。我将网格视图绑定到数据库中的表。问题是我想根据where子句过滤我正在显示的内容。

<asp:LinqDataSource ID="ItemsDataSource" runat="server" ContextTypeName="Database.MyDataContext" TableName="ItemDetails" OnSelecting="ItemSourceSelecting" Where="ID == @ID" >

然后这是我的ItemSourceSelecting

protected void ItemSourceSelecting(object sender, LinqDataSourceSelectEventArgs e)
{
    if (!IsPostBack)
        e.WhereParameters.Add("ID", ID);
}

当我第一次加载页面时,这很有用。问题是我只在GridView中显示10个项目,然后它在底部有页码。当我尝试查看另一个页面时,它会带回数据库中的所有内容,而不会调用ItemSourceSelecting。是否有其他地方或方式我应该这样做,所以这不会发生?

编辑: 当我在LinqDataSource标记中硬编码Where =“ID == 1”时,它工作正常。看起来它应该在更改页面时调用ItemSourceSelecting,但事实并非如此。不知何故,当页面被更改时,where子句会被丢弃。

1 个答案:

答案 0 :(得分:0)

这对我有用。我删除了OnSelecting事件并将其添加到我的Page_Load。

if (!IsPostBack)
{
    Parameter p = new Parameter("ID", DbType.Int32, ID.ToString());
    this.AssetsDataSource.WhereParameters.Add(p);
}