Постраничный просмотр грида

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Постраничный просмотр грида

Сообщение AndrewMarcovich » 21.12.2006 (Чт) 10:47

Такая проблема:
на страничке есть SqlDataSource, к нему прицеплен GridView.
Есть кнопка, по нажатию которой, происходит изменение запроса в SqlDataSource и изменение рез-та грида.
НО: при выводе в несколько страниц и по щелчку на страницы>1 происходит "сброс" SqlDataSource.SelectCommand на первонач.установку, а также заново событие Page_Load. Как такого избежать? Спасибо
Может как-то запоминать глобально строку запроса и каждый раз записывать её в SqlDataSource.SelectCommand после процедуры Page_Load?

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 21.12.2006 (Чт) 13:30

Код приведите, пожалуйста. Как изменяете запрос и в какой момент его поднимаете.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 22.12.2006 (Пт) 7:14

Код такой:

public partial class _Default : System.Web.UI.Page
{
string FSQLStr;
void Page_Load(object sender, EventArgs e)
{
//если не авторизованы, то идем и авторизуемся
if (!Context.User.Identity.IsAuthenticated)
Response.Redirect("login.aspx");
RefreshGrid();
}
protected void btnSend_Click(object sender, EventArgs e)
{
//собираем XML
RefreshGrid(" where ln like '" + txtSearch.Text + "%'");
}
void RefreshGrid(string Conds)
{
FSQLStr = "select id, Ln, Fn, Mn, BirthDate as [Дата Рожд]," +
"WhyReal as Причина, PassS as Серия, PassNum as Номер, PassD as [Дата выдачи]," +
"PassH as [Кем выдан], AdresRI + AdresRC + AdresRS + AdresRH + AdresRF as [Регистрация]," +
"AdresFI + AdresFC + AdresFS + AdresFH + AdresFF as [Проживание],Bank as Банк, Bank_id, status_id " +
"from vtMonkey ";
if (Conds != "")
SqlDataSource1.SelectCommand = FSQLStr + " where ln like '" + txtSearch.Text + "%'";
else
SqlDataSource1.SelectCommand = FSQLStr;
TGlob.IndexSQLStr = SqlDataSource1.SelectCommand;
GVW.DataBind();
//lblTotalRecords.Text = "Всего найдено записей: " + ((DataTable) GVW.DataSource).Rows.Count;
}
}

Выкрутился след образом: TGlob.IndexSQLStr-стат.переменная,куда я сохраняю рез-тат последнего запроса. Запрос происходит в btnSend_click. Сейчас проблема вроде решена, но мне этот способ кажется несколько извращенным. Как бы это реализовать правильнее?

Menestrel
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 30.05.2007 (Ср) 13:00

Сообщение Menestrel » 30.05.2007 (Ср) 13:25

Я так понял, GVW - сам объект GridView. Однако, где объявляется и зачем оно вообще надо TGlob ? Оно используется только в одной строчке. При аналогичном подмене запроса в SqlDataSourcе, всё компилится нормально, однако, при нажатии на кнопку, вылазит ошибка, ругается на строчку GridView1.DataBind();


Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList