我正在尝试将我的代码分成类文件。但是,我遇到的问题是如何从类文件中访问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;
}
}
我一直想着一种能做到这一点的方法吗?想法?
答案 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的所有代码之后,玩得开心!