отношение набора данных в c # для двух столбцов - PullRequest
0 голосов
/ 03 сентября 2018

Буду очень признателен за помощь в этом коде. У меня есть DataSet с двумя таблицами; Мне нужно создать отношение на основе двух столбцов в качестве первичного ключа:

public DataSet GetAll()
{
    string sql = $@"SELECT * FROM Journal ORDER BY JvNO, cYear;
                    SELECT * FROM JournalDetail ORDER BY JvNO, cYear";

    using (SqlConnection connection = new SqlConnection(GlobalConfig.ConnString()))
    {
        connection.Open();

        SqlCommand cmd = new SqlCommand(sql, connection);

        SqlDataAdapter da = new SqlDataAdapter(sql, connection);
        DataSet ds = new DataSet();
        da.Fill(ds);

        ds.Relations.Add("Journal_Batch", new DataColumn[] { ds.Tables[0].Columns["JvNO"], ds.Tables[0].Columns["cYear"] }, 
                                          new DataColumn[] { ds.Tables[1].Columns["JvNO"], ds.Tables[1].Columns["cYear"] });

        return ds;
    }
}

В настоящее время я делаю это так, и это работает, но мне нужно это с отношением DataSet:

public DataSet GetJournalByID(int JVNO, int cYear)
{
    string sql = $@"SELECT * FROM Journal WHERE JvNO = { JVNO } and cYear = { cYear };
                    SELECT * FROM JournalDetail WHERE JvNO = { JVNO } and cYear = { cYear };";

    using (SqlConnection connection = new SqlConnection(GlobalConfig.ConnString()))
    {
            connection.Open();

            SqlCommand cmd = new SqlCommand(sql, connection);

            SqlDataAdapter da = new SqlDataAdapter(sql, connection);
            DataSet ds = new DataSet();

            da.Fill(ds);

            return ds;
    }
}

Я не знаю, что не так с первым кодом, так как он возвращает все совпадения JvNO или Year.

Я хочу использовать первый, чтобы заполнить две сетки следующим образом:

    private void GetData()
    {
        DataSet currentDs = new DataSet();

        grdJournalDetails.DataSource = null;
        grdJournal.DataSource = null;

        JournalConnector journalConnection = new JournalConnector();
        currentDs = journalConnection.GetAll();

        grdJournal.DataSource = currentDs.Tables[0];
        grdJournalDetails.DataSource = currentDs.Tables[1];
    }

затем с каждой выбранной строкой из grdJournal для отображения grdJournalDetails со связанными данными без вызова каждый раз второго фрагмента кода.

Я использовал Dapper, и я с ним знаком, но с сеткой devexpress для использования события должно быть датированное значение gvJournal_FocusedRowChanged , иначе datarow всегда возвращает ноль;

Спасибо за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...