代码如下:
while(!rst.IsEOF())
{
         pListCtrl->InsertItem(nTotalCount,"strValue");
for(int i=0; i<nFields; i++)
{
rst.GetFieldValue((short)i,strValue);
pListCtrl->SetItemText(nTotalCount,i,strValue);
}
nTotalCount ++;
nCount ++;
rst.MoveNext();
}
在执行了上面的代码后,只有最后一行的数据可以正确写入ListCtrl,而其它除了第一列为“strValue”外,都为空。
请问这是怎么回事?

解决方案 »

  1.   

    应该是:
    for(int i=1; i<nFields; i++)
      

  2.   

    我用for(int i=1; i<nFields; i++)
    试过了,但也不行。
      

  3.   

    试试这个:
    while(!rst.IsEOF())
    {
             pListCtrl->InsertItem(0,"strValue");
    for(int i=1; i<nFields; i++)
    {
    rst.GetFieldValue((short)i,strValue);
    pListCtrl->SetItemText(0,i,strValue);
    }
    nCount ++;
    rst.MoveNext();
    }
      

  4.   

    while之前nTotalCount赋0了没有
    而且,pListCtrl->SetItemText(nTotalCount,i,strValue);这里第一个参数应该试用上一句InsertItem的返回值
      

  5.   

    看看你的rst.GetFieldValue((short)i,strValue);
    这句是否成功!!加个MessageBox(strValue);看看strValue里面是否有值再说!!
      

  6.   

    使用jnxulei(石头)和kingtsui(老农民)的方法,程序能够成功执行,但是数据的排列顺序被倒过来了。请问为什么我的方法不行?
      

  7.   

    因为InsertItem的时候,用0作参数的话是插在最前面的,所以是逆序的
    如果不想逆序,就用GetCount做插入参数,就会插在最后了while(!rst.IsEOF())
    {
             int nIndex = pListCtrl->InsertItem(pListCtrl->GetCount(),"strValue");
             if(nIndex != -1)
             {
             for(int i=1; i<nFields; i++)
             {
           rst.GetFieldValue((short)i,strValue);
           pListCtrl->SetItemText(nIndex,i,strValue);
                      }
    }
    nCount ++;
    rst.MoveNext();
    }