У меня есть страница 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 отбрасывается при изменении страницы.