Буду очень признателен за помощь в этом коде. У меня есть 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 всегда возвращает ноль;
Спасибо за любые предложения.