2014-11-20 3 views
0

У меня проблема с привязкой одного из моих таблиц к GridView. Я пробовал все, но ничего не помогал. У меня есть кнопка поиска, и я хочу, чтобы она показывала мне результат моего поиска, и у меня есть DropDownList, который привязывается к другой таблице.как связать сетку?

Вот код:

SqlConnection my_cn = new SqlConnection("Data Source=NIMA-PC;Initial Catalog=PDFha;Integrated Security=True"); 
my_cn.Open(); 
SqlCommand cmd = new SqlCommand("SELECT Books.Name,Books.Subject,Books.PublisherName,Books.Summery FROM Books WHERE (Books.Subject= '" + subList.SelectedValue.ToString() + "') AND (Books.Name= '" + searchName.Text + "')", my_cn); 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = cmd; 
adapter.Fill(ds); 
DataTable dt = ds.Tables[0]; 
SqlDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()==true) 
{ 
    GridView1.DataSource = dt; 
} 
my_cn.Close(); 

Ничего не происходит при нажатии кнопки Я знаю, что есть что-то не так с моей C# код, но я не могу идентифицировать. Оцените любые комментарии.

+2

GridView1.DataBind(); –

+0

@Shree попробовал, не работает. –

ответ

2

Попробуйте это: - У вас не хватает DataBind метод, кроме этого я не знаю, почему вы снова вызова DataReader, удалили этот код тоже. Кроме того, пожалуйста, используйте параметризованный запрос, чтобы предотвратить SQL Injection. Что-то вроде: - cmd.Parameters.AddWithValue()

SqlConnection my_cn = new SqlConnection("Data Source=NIMA-PC;Initial Catalog=PDFha;Integrated Security=True"); 
my_cn.Open(); 
SqlCommand cmd = new SqlCommand("SELECT Books.Name,Books.Subject,Books.PublisherName,Books.Summery FROM Books WHERE (Books.Subject= '" + subList.SelectedValue.ToString() + "') AND (Books.Name= '" + searchName.Text + "')", my_cn); 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = cmd; 
adapter.Fill(ds); 
DataTable dt = ds.Tables[0]; 
GridView1.DataSource = dt; 
GridView1.DataBind(); 
my_cn.Close(); 
+0

снова попробовал, но он даже не показывает мое gridview ... это похоже на то, что даже нет? –

+0

@NimaSharify - Вы отлаживали код и видели, заполняется ли 'dt'? –

+0

Да, код sql отлично, и запрос возвращает 3 строки. если это то, о чем вы спрашиваете? –

0
while (dr.Read()==true) 
    { 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 

    } 
+0

попробовал, но он даже не показывает мой gridview ... это все равно, что нет? –

+0

Ваш запрос sql возвращает данные? У вашего DataTable dt есть строки? – sdeep

1

Это должно быть исправленный код

SqlConnection my_cn = new SqlConnection("Data Source=NIMA-PC;Initial Catalog=PDFha;Integrated Security=True"); 
my_cn.Open(); 
SqlCommand cmd = new SqlCommand("SELECT Books.Name,Books.Subject,Books.PublisherName,Books.Summery FROM Books WHERE (Books.Subject= '" + subList.SelectedValue.ToString() + "') AND (Books.Name= '" + searchName.Text + "')", my_cn); 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = cmd; 
adapter.Fill(ds); 
DataTable dt = ds.Tables[0]; 
//Modified start 
//You don't need SQLReader, While loop 
GridView1.DataSource = dt; 
GridView1.DataBind(); 
//Modified End 
my_cn.Close(); 
Смежные вопросы