2012-06-18 58 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。有用。 –