datagrid没有显示

时间:2011-11-10 16:47:38

标签: c# sql ado.net

我正在尝试将数据从sql显示到数据网格中,如下所示:

 try
    {
        SqlConnection xconn = new SqlConnection();
        xconn.ConnectionString = @"Data Source=servername; Trusted_Connection=yes; Database=master";
        xconn.Open();
        string s = "select * from tablename where name=@name";
        SqlCommand ycmd = new SqlCommand(s, xconn);

        ycmd.Parameters.Add("@name", dropdownlistname.SelectedValue);
        SqlDataAdapter da = new SqlDataAdapter(ycmd);

        DataTable dt = new DataTable();
        da.Fill(dt);
        gridview.DataSource = dt;
        gridview.DataBind();
    }
    catch (Exception e2)
    {
        lblresult.Text = e2.Message + "<br />" + e2.StackTrace  ; 
    }

我没有任何例外。但是,不显示网格。

2 个答案:

答案 0 :(得分:1)

尝试这样....

你可以改变这取决于你的要求......

SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM Product WHERE Product.ID=@PROD_ID";
command.Parameters.Add(new SqlParameter("@PROD_ID", 100));

// Execute the SQL Server command...
SqlDataReader reader = command.ExecuteReader();
DataTable tblProducts = new DataTable();
tblProducts.Load(reader);

foreach (DataRow rowProduct in tblProducts.Rows)
{
    // Use the data...
}

答案 1 :(得分:0)

它不起作用,因为你正在为你的sql语句定义一个参数@name,但你永远不会提供任何值,因为带有2个参数的SqlCommand.Parameters.Add版本是接收 parameterName 和 SqlDbType

我很惊讶你没有得到例外。也许您的dropdownlistname.SelectedValue匹配 SqlDbType 的枚举值之一,这就是原因?

你应该这样做:

ycmd.Parameters.AddWithValue("@name", dropdownlistname.SelectedValue);