0

コードをクラスファイルに分割しようとしています。しかし、私が抱えている問題は、クラスファイルから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;
    }
}

私はこれを行う方法を考えようとしてきましたか?アイデア?

4

2 に答える 2

0

階層アーキテクチャのようなことを行うことができます...プレゼンテーション、ビジネスロジック、およびDataAccess。

文字列をコマンド テキストとして受け取るメソッドまたは関数を作成し、コマンド タイプ (SP またはインライン コマンド) を指定します。

これを使用して、DataSet または DataTable を戻りオブジェクトとして取得します。

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

これをクラス ファイルとして使用し、form1 クラスまたは form1.cs でデータセットを取得します (C# bee の場合)。

楽しい時間をお過ごしください。コードは楽しいものです。

于 2012-10-25T12:47:10.203 に答える
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;
}
于 2012-10-25T12:37:27.543 に答える