ListCtr列表控件显示有关问题,多出好多列
ListCtr列表控件显示问题,多出好多列
连Oracle后自动读取表名在List列表框中显示,双击列表框中的表名后在列表控件中显示全部表信息,编译运行通过,只是列表控件中多显示出好列,都是重复的最后一列。
双击代码如下:
------解决方案--------------------
while
for
InsertColumn
这样已经执行了很多次的添加列
------解决方案--------------------
代码
while(!pRst->adoEOF)
{
m_grid.InsertItem(0, "");
for(k=0;k<countl;k++)
{
var.iVal = k;
pField = pRst->Fields->GetItem(var);
pField->get_Value(&varFieldVal);
if(varFieldVal.vt != VT_NULL)
m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal);
m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
}
pRst->MoveNext();
}
里的m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);不用要了吧。
连Oracle后自动读取表名在List列表框中显示,双击列表框中的表名后在列表控件中显示全部表信息,编译运行通过,只是列表控件中多显示出好列,都是重复的最后一列。
双击代码如下:
- C/C++ code
void CSiDView::OnDblclkList1() { // TODO: Add your control notification handler code here UpdateData(TRUE); m_grid.DeleteAllItems(); CHeaderCtrl* pHeaderCtrl = m_grid.GetHeaderCtrl(); if (pHeaderCtrl != NULL) { int nColumnCount = pHeaderCtrl->GetItemCount(); for(int i =0; i < nColumnCount; i++) m_grid.DeleteColumn(0) ; } CString str,sql; m_list.GetText(m_list.GetCurSel(),str); sql.Format("select * from %s",str); pRst.CreateInstance(__uuidof(Recordset)); //pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(), adOpenStatic , adLockReadOnly, adCmdText); Fields * fields=NULL; long countl; BSTR bstr; pRst->get_Fields((&fields)); countl=fields->Count; for(long i=0;i<countl;i++) { fields->Item[i]->get_Name(&bstr); m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0); } int k; _variant_t var; tagVARIANT varFieldVal; var.vt = VT_I2; FieldPtr pField; while(!pRst->adoEOF) { m_grid.InsertItem(0, ""); for(k=0;k<countl;k++) { var.iVal = k; pField = pRst->Fields->GetItem(var); pField->get_Value(&varFieldVal); if(varFieldVal.vt != VT_NULL) m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal); m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0); } pRst->MoveNext(); }
------解决方案--------------------
while
for
InsertColumn
这样已经执行了很多次的添加列
------解决方案--------------------
代码
while(!pRst->adoEOF)
{
m_grid.InsertItem(0, "");
for(k=0;k<countl;k++)
{
var.iVal = k;
pField = pRst->Fields->GetItem(var);
pField->get_Value(&varFieldVal);
if(varFieldVal.vt != VT_NULL)
m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal);
m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
}
pRst->MoveNext();
}
里的m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);不用要了吧。