将数据适配器和gridview分隔为类文件

时间:2012-10-25 12:34:07

标签: c# datagridview dataadapter

我正在尝试将我的代码分成类文件。但是,我遇到的问题是如何从类文件中访问dataGridviewLogging中包含的Form1

public void getLogging(String sql)
{
    SqlDataAdapter dataadapter = new SqlDataAdapter(sql, mycon);       
    DataSet ds = new DataSet();

    try
    {
        dataadapter.Fill(ds, "LOG_MESSAGE");
        dataGridViewLogging.DataSource = ds;
        dataGridViewLogging.DataMember = "LOG_MESSAGE";
    }
    catch (Exception f)
    {
        Console.WriteLine(f.ToString());
        MessageBox.Show("FAILURE:" + f.ToString());
        return;
    }
}

我一直想着一种能做到这一点的方法吗?想法?

2 个答案:

答案 0 :(得分:0)

由于您的方法名为getLogging,因此您希望返回可用作DataSource的数据。因此,不应在此处设置数据源,而应将其设置在可以访问数据绑定控件的位置。

例如(在Form1中):

dataGridViewLogging.DataSource = getLogging(
          DateTime.Today.AddMonths(-6)
        , DateTime.Today);  // don't pass the sql directly, use parameters instead

在你班上:

public DataSet getLogging(DateTime logFrom, DateTime logTo)
{
    DataSet ds = new DataSet();
    const string sql = "SELECT Columns FROM dbo.Table WHERE LoggedAt BETWEEN @LoggedFrom AND @LoggedTo ... ODRER BY ...";
    using (var mycon = new SqlConnection(connectionString))
    using (var da = new SqlDataAdapter(sql, mycon))
    {
        da.SelectCommand.Parameters.AddWithValue("@LoggedFrom", logFrom);
        da.SelectCommand.Parameters.AddWithValue("@LoggedTo", logFrom);
        try
        {
            da.Fill(ds);
        } catch (Exception f)
        {
            // log here
            throw;
        }
    }
    return ds;
}

答案 1 :(得分:0)

你可以做类似体系结构......演示,业务逻辑和DataAccess。

创建一个方法或函数,将String作为命令文本,指定命令类型(SP或内联命令)

使用它将DataSet或DataTable作为返回对象。

Public DataTable GetDataTableFromDB(String CommandText,
                                    SqlCommandType type,
                                    SqlParameter [] param)
{
    DataTable temp=somthing;
    /* your logic */
    return DataTable;
}

将此作为类文件使用并在form1类或form1.cs中获取数据集(如果您是c#bee)

在FUN的所有代码之后,玩得开心!