2010-10-24 2 views
0

Может кто-то, пожалуйста, помогите мне. У меня есть динамически созданные элементы управления на моей странице, которая состоит из GridView, DropDownList, TextBox и Button.GridView с включенным пейджингом не фильтруется на основе ввода других элементов управления (DropDownList, TextBox)

Я успешно извлек данные в элемент управления GridView, который затем активировал атрибут поискового вызова. Теперь я пытаюсь отфильтровать данные в соответствии с введенным пользователем пользователем через DropDownList и TextBox, запущенным событием нажатия кнопки. Однако это не работает.

У меня есть следующий код:

В CreateChildControls:

Controls.Add(_searchTitle); 
Controls.Add(_searchDDL); 
Controls.Add(_searchTextBox); 
Controls.Add(_searchBtn); 
Controls.Add(new LiteralControl("<br /><br />")); 

Controls.Add(_title); 
Controls.Add(new LiteralControl("<br /><br />")); 

SelectEmployees(_searchDDL, _searchTextBox, _grid, _empObj, _dt, _strConn); 
EmployeesGrid(_grid, _IDColumn, _hyperlinkedColumn, _column, _title); 
Controls.Add(_grid); 
DesignGrid(_grid); 

if(!Page.IsPostBack) 
{ 
    SearchArea(_searchTitle, _searchDDL, _searchTextBox, _searchBtn); 
} 

метод SelectEmployees отвечает за запросы данных. EmployeesGrid предоставляет запрос только в элемент управления GridView. DesignGrid - это метод, который определяет стиль для сетки. SearchArea определяет стиль элементов управления поиском.

Следующий код вызывается при нажатии кнопки. Однако он ничего не делает:

private void FilterEmployees(DropDownList searchDDL, TextBox searchTextBox, GridView grid, DataTable dt) 
{ 
    string col = ""; 

    if ((searchDDL.SelectedValue.Equals("First Name")) && (!searchTextBox.Text.Equals(""))) 
    { 
     col = "FirstName = " + searchTextBox.Text; 
    } 
    else if ((searchDDL.SelectedValue.Equals("Last Name")) && (!searchTextBox.Text.Equals(""))) 
    { 
     col = "LastName" + searchTextBox.Text; 
    } 
    else if ((searchDDL.SelectedValue.Equals("Department")) && (!searchTextBox.Text.Equals(""))) 
    { 
     col = "Department" + searchTextBox.Text; 
    } 
    else if ((searchDDL.SelectedValue.Equals("ID Number")) && (!searchTextBox.Text.Equals(""))) 
    { 
     col = "IDNumber" + searchTextBox.Text; 
    } 
    else 
    { 

    } 

    DataView view = new DataView(dt); 
    view.RowFilter = col; 
    grid.DataSource = view; 

    DesignGrid(grid); 


} 

Пожалуйста, помогите. Благодарю.

+0

Почему вы добавляете эти элементы управления динамически? Это станет источником большой боли. –

+0

Я помещаю его в веб-страницу для SharePoint. – janejanejane

ответ

0

Извините. Я мог быть очень глупым здесь. Может быть, потому, что нет вызова метода grid.DataBind()?

Я просто попробовал очень похожую программу, и я смог отфильтровать, как вы ожидаете.

-Prasanna K Рао

+0

Привет, У меня есть метод DataBind внутри DesignGrid ... – janejanejane

0

Вы уверены, что вы повторно добавлять элементы управления на постбэка с правильными выбранными значениями? (вам нужно добавить свои элементы управления в сеанс и загружать их каждый раз при обратной передаче).

Если вы это делаете, можете ли вы показать нам, где вы привязываете событие onclick к своей кнопке.

Смежные вопросы