Это требование звучит, как это может быть выполнено с помощью SQL Inner Join
в запросе, который вы используете в вашем SqlDataAdapter
. Если бы вы смогли объединить два источника данных вместе с соответствующими ключами, вы могли бы просто вытащить данные один раз. Но я собираюсь предположить, что есть причина, почему это не сработает для вас.
Вы можете на самом деле делать то, что вы хотите с DataSet
, но вам нужно принять несколько шагов:
string sql = "The first query"
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, myConnection);
DataSet ds = new DataSet();
myConnection.Open();
dataadapter.Fill(ds, "Authors_table");
myConnection.Close();
// I don't know what your primary key is, but you need to have one.
// I am assuming it's called "author_id".
DataColumn authorIdColumn = ds.Tables["Authors_table"].Columns["author_id"];
ds.Tables["Authors_table"].PrimaryKey = new[] { authorIdColumn };
// Get your second set of data
sql = "My second query, which also has the same primary key, but has more columns"
dataadapter = new SqlDataAdapter(sql, myConnection);
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
DataSet ds2 = ds.Clone();
myConnection.Open();
dataadapter.Fill(ds2, "Authors_table");
myConnection.Close();
// Now we use the DataSet.Merge method, which is very powerful.
ds.Merge(ds2, false, MissingSchemaAction.AddWithKey);
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Authors_table";
Вы можете поэкспериментировать с этим много: это только наброски , Не зная ваши данные и то, что вы делаете до этого момента, трудно узнать, какие настройки или методы вам также необходимо вызвать.
Ваш вопрос о том, как заставить DataGridView отражать данные, имеющиеся в «DataSet», или как заставить DataSet иметь нужные данные? –
Это _sounds_, как если бы вы хотите заполнить DataTable в DataSet, а затем добавить дополнительные данные в дополнительный столбец в DataTable, сопоставляя идентификаторы записей, чтобы каждая строка получала соответствующее значение данных в вашем новом столбце. Это верно? –
@AnnL. Это действительно правильно sir –