2012-02-15 5 views
0

Я создаю веб-сайт. На домашней странице есть текстовое поле и раскрывающееся окно, в котором пользователь вводит имя и язык фильма для поиска. Когда пользователь нажимает кнопку «Поиск», отображается страница результатов поиска, и результаты поиска должны отображаться в сетке данных. Я создал переменные сеанса для передачи текста текстового поля и сетки данных, которые будут использоваться на другой странице. Код для извлечения данных из базы данных относится к классу, как передать значения, полученные из базы данных, методу другой страницы? Это код, который я написал, он не дает никаких ошибок, но сетка данных не заполняется результатами, что я делаю неправильно?Передача значений из класса методу другого класса

//Code for search button in home page 
protected void Btnsearch_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("SearchResults.aspx"); 
     Session["moviename"] = TextBox3.Text; 
     Session["language"] = DropDownList1.Text; 
    } 

//Code to fetch data from database 
public class movie 
    { 
    public SqlDataAdapter searchmovie(object moviename, object language) 
    { 
     connection.con.Open(); 
       SqlDataAdapter adapter1 = new SqlDataAdapter("select 
           select movieName,language,director,price from movie  
             where moviename = '" + moviename + "' and 
             language = '" + language + "'", 
       return adapter1; 

} 
    } 

    //Code in search page to fill data grid with search results 
     public partial class SearchResults : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     movie m = new movie(); 
     SqlDataAdapter movieDetails = m.searchmovie(Session["moviename"], 
            Session["language"]); 
     DataSet data = new DataSet(); 
     movieDetails.Fill(data, "movieD"); 
     GridView1.DataSource = data.Tables["movieD"]; 
     GridView1.DataBind(); 
    } 
} 
+1

При передаче коротких строк вам намного лучше использовать QueryStrings, а не Session. Если вы используете сеанс, вам нужно беспокоиться о значениях из предыдущих вызовов, которые все еще находятся там, вы забиваете сеанс данными, которые вам не нужны, как только вы показываете страницу поиска (если вы не удалите их, больше времени/усилий) вам нужно беспокоиться об использовании одних и тех же переменных сеанса в разных местах вашего приложения (вы можете или не собираетесь повторно использовать одни и те же объекты). Как правило, вы всегда должны избегать использования сеанса, если у вас нет выбора. Здесь у вас есть выбор. – Servy

ответ

2

Установить переменные сессии перед перенаправлением, как это:

protected void Btnsearch_Click(object sender, EventArgs e) 
{ 
    Session["moviename"] = TextBox3.Text; 
    Session["language"] = DropDownList1.Text; 
    Response.Redirect("SearchResults.aspx");   
} 
+0

ОК теперь он отлично работает –

2

Я хотел бы предложить, чтобы избежать сессии в качестве хранилища данных.

ASP.NET имеет приятную функцию, называемую перекрестными сообщениями: она позволяет вам управлять всеми страницами и отображать информацию со страницы на другую.

http://msdn.microsoft.com/en-us/library/ms178139.aspx

Лично я очень люблю функцию, потому что вы можете ссылаться на страницу как объект, имеющий открытые элементы управления объявления собственность!

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