Попробуйте это:
try
{
SqlConnection xconn = new SqlConnection();
xconn.ConnectionString = @" Data Source=servername; Database=master; Trusted_Connection=yes";
SqlCommand ycmd = new SqlCommand ("select * from tablename where column1 = @name", xconn);
ycmd.Parameters.Add("@name", dropdownlist.SelectedValue);
SqlDataAdapter da = new SqlDataAdapter(ycmd);
DataTable dt = new DataTable();
da.Fill(dt);
gridview.DataSource = dt;
gridview.DataBind();
}
catch(Exception ex)
{
label.Text = ex.Message + "\n" + ex.StackTrace;
}
Вам не нужно вызывать SqlConnection.Open()
, когда вы используете метод SqlDataAdapter.Fill()
. В этом методе он открывает соединение и удаляет / закрывает его после завершения. (это не проблема, просто к вашему сведению)
Проблема в том, как вы создали SqlDataAdapter
. Вы не создали его с SqlCommand
в качестве конструктора, просто текст команды. Из-за этого вы не передали параметр, указанный в классе SqlCommand
.
Дайте мне знать, если это работает. И если это не сработает, попробуйте вручную выполнить этот запрос в SSMS, чтобы убедиться, что он действительно возвращает набор результатов. Также убедитесь, что ваше свойство ListControl.SelectedValue
содержит что-то. Сделайте это путем отладки и анализа того, что там хранится.