GridView, где предложение - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть страница 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);
}

Это прекрасно работает, когда страница загружается в первый раз, когда я захожу на нее. Проблема в том, что я отображаю только 10 элементов в GridView, а затем в нижней части номера страниц. Когда я пытаюсь просмотреть другую страницу, она возвращает все в базу данных и не вызывает ItemSourceSelecting. Есть ли другое место или способ, которым я должен делать это, чтобы этого не произошло?

Edit: Работает нормально, когда я жестко кодирую Where = "ID == 1" в теге LinqDataSource Кажется, что он должен вызывать ItemSourceSelecting при смене страниц, но это не так. Каким-то образом предложение where отбрасывается при изменении страницы.

1 Ответ

0 голосов
/ 09 апреля 2011

Вот что у меня сработало.Я удалил событие OnSelecting и добавил его в свою Page_Load.

if (!IsPostBack)
{
    Parameter p = new Parameter("ID", DbType.Int32, ID.ToString());
    this.AssetsDataSource.WhereParameters.Add(p);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...