2012-06-18 62 views
0

我有一个表dbo.MSreplication_options使用connectionString,我试图将此表映射到datagrid1.DataSource。Sql表不映射到Datagrid

SqlConnection cnn; 
SqlCommand con; 
SqlDataAdapter da; 
DataSet ds; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    string strcon = ConfigurationManager.ConnectionStrings["masterConnectionString"].ConnectionString; 

    cnn = new SqlConnection(strcon); 
    con = new SqlCommand("select * from dbo.MSreplication_options"); 
    con.Connection = cnn; 
    ds = new DataSet(); 
    da = new SqlDataAdapter(con); 
    cnn.Open(); 
    da.Fill(ds); 
    cnn.Close(); 
    DataGrid1.DataSource = ds.Tables[0].ToString(); 
} 

web配置

<connectionStrings> 

    <add name="masterConnectionString" connectionString="Data Source=node39\SQLExpress;Initial Catalog=master;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

在运行时,它不映射到DataGrid1中?我在做什么特别的错误?

+0

你不需要做 'cnn.Open(); da.Fill(ds);因为SqlDataAdapter使用ADO.net的非连接体系结构,而不是只写'da.Fill(ds);' – yogi

回答

2

你缺少DataGrid1.DataBind();

除了这个Memory Management没有被照顾。

string strcon = ConfigurationManager.ConnectionStrings["masterConnectionString"].ConnectionString; 
using (SqlConnection cnn = new SqlConnection(strcon)) 
{ 
    con = new SqlCommand("select * from dbo.MSreplication_options"); 
    con.Connection = cnn; 
    using (DataSet ds = new DataSet()) 
    { 
     da = new SqlDataAdapter(con); 
     cnn.Open(); 
     da.Fill(ds); 
     cnn.Close(); 
     DataGrid1.DataSource = ds.Tables[0].ToString(); 
     DataGrid1.DataBind(); 
    } 
} 
4

在DataGrid1.DataSource = ds.Tables [0] .ToString();之后执行此操作。

DataGrid1.DataBind() 
+1

而且像在Kanavis文章中想要确保您的对象正确处置 – theedam

+0

谢谢先生。我只是忘记放Databind。有用。 –