cgridctrl单元格下拉框选中后,需要根据选中的数据进行联动,但是这个下拉框是一个CGridCellCombo对象,无法直接为它绑定事件。这时我们可以考虑的实现方法是:下拉选中后,整个Grid完成了编辑,这时可以在Grid的EndEdit事件中处理我们的逻辑。
代码如下:
ON_NOTIFY(GVN_ENDLABELEDIT, IDC_TACTICS_DETAIL_GRID, OnGridEndEdit)
...
afx_msg void OnGridEndEdit(NMHDR *pNotifyStruct, LRESULT* pResult);
...
void CTacticsSetDlg::OnGridEndEdit(NMHDR *pNotifyStruct, LRESULT* pResult)
{
NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) pNotifyStruct;
if(pItem->iRow >0 || pItem->iRow < m_gridDetail.GetRowCount())
{
if(2 == pItem->iColumn) //列号
{
//do something.
}
}
*pResult = 0;
}
#include "GridCtrl_src/GridCellCombo.h"
...
CStringArray m_productArry;
...
m_gridDetail.SetCellType(item,0,RUNTIME_CLASS(CGridCellCombo));
CGridCellCombo*pCell = (CGridCellCombo*)m_gridDetail.GetCell(item,0);
pCell->SetOptions(m_productArry);
pCell->SetStyle(CBS_DROPDOWNLIST);
if (m_productArry.GetSize() > 0)
pCell->SetText(m_productArry[0]);