以第二個資料錄集填入清單方塊
預設狀態下,資料錄檢視僅與一個資料錄集物件有關聯性,其欄位會對應至資料錄檢視的控制項。有時您可能想要將清單方塊或下拉式方塊控制項放入資料錄檢視,並以第二個資料錄集物件填入值。使用者可使用清單方塊來選取要顯示於資料錄檢視內的新資訊分類。這個主題說明了執行該動作的方式和時間。
提示 |
---|
請注意,從資料來源將資料填入下拉式方塊或清單方塊可能會很慢。使用包含大量資料錄的資料錄集填入控制項時要特別小心。 |
本主題所述的模型 (由主要資料錄集組成) 將填入表單的控制項,而第二個資料錄集則填入清單方塊或下拉式方塊。在清單方塊內選取字串將讓程式根據選取的項目重新查詢主要的資料錄集。下列程序使用的是下拉式方塊,但也同樣適用於清單方塊。
若要從第二個資料錄集填入下拉式方塊或清單方塊
建立資料錄集物件 (針對 ODBC 為 CRecordset,針對 DAO 為 CDaoRecordset)。
取得下拉式方塊控制項 CComboBox 物件的指標。
清除先前存在於下拉式方塊中的任何內容。
在資料錄集的所有資料錄內移動,為想要加至下拉式方塊的目前資料錄內的每個字串呼叫 CComboBox::AddString。
初始化下拉式方塊內的選項。
void CSectionForm::OnInitialUpdate()
{
// ...
// Fill the combo box with all of the courses
CENROLLDoc* pDoc = GetDocument();
if (!pDoc->m_courseSet.Open())
return;
// ...
m_ctlCourseList.ResetContent();
if (pDoc->m_courseSet.IsOpen())
{
while (!pDoc->m_courseSet.IsEOF() )
{
m_ctlCourseList.AddString(
pDoc->m_courseSet.m_CourseID);
pDoc->m_courseSet.MoveNext();
}
}
m_ctlCourseList.SetCurSel(0);
}
這個函式會使用第二個資料錄集,m_courseSet,其包含了每個課程所提供的一個資料錄,以及儲存於資料錄檢視類別內的一個 CComboBox 控制項,m_ctlCourseList。
函式會由文件中取得 m_courseSet,並將此函式開啟。接著它會將 m_ctlCourseList 清空,並於 m_courseSet 內捲動。對於每個資料錄,函式將呼叫下拉式方塊的 AddString 成員函式,以便加入資料錄的課程 ID 值。最後,程式碼會設定下拉式方塊的選取項目。