【问题标题】:Sql Table Doesnt Map to DatagridSql 表不映射到 Datagrid
【发布时间】:2012-06-20 08:31:28
【问题描述】:

我有一个使用 connectionString 的表 dbo.MSreplication_options,我正在尝试将此表映射到 datagrid1.DataSource。

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();
}

网络配置

<connectionStrings>

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

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

【问题讨论】:

  • 不需要cnn.Open(); da.Fill(ds); cnn.Close();,因为SqlDataAdapter使用的是ADO.net的非连接架构,直接写da.Fill(ds);

标签: asp.net sql-server datagrid database-connection


【解决方案1】:

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

DataGrid1.DataBind()

【讨论】:

  • 就像在 Kanavis 帖子中一样,您希望确保您的对象被正确处理
【解决方案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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多