代码的意思是这样的:当在datagrid中显示了数据以后,点击datagrid上的某一个字段名,则所有记录按该字段排序。但是当运行到CColumn col = cols.GetItem(index)时出现了Debug Assertion Failed错误,请教高手,这该怎么改哈。多谢了!
void CAdoTestView::OnHeadClickDatagrid(short ColIndex) 
{


//得到DataGrid中表示各列信息的类
CColumns cols = m_DataGrid.GetColumns();
//此参数用来得到具体某一列
VARIANT index;
//值为index
index.intVal = ColIndex;
//类型为整型
index.vt = VT_I4;
//得到点击列
CColumn col = cols.GetItem(index);
//得到此列的名字
m_strTableName = col.GetCaption();
}

解决方案 »

  1.   

    index.intVal = ColIndex; 
    //类型为整型 
    index.vt = VT_I4; 
    换下位置
      

  2.   

    CString CYourDataGrid::GetItem(int ColNum) 

    CColumns cols = GetColumns(); 
    VARIANT varColNum, varValue; 
    //设置列编号 
    varColNum.vt = VT_I2;// short int 
    varColNum.iVal = ColNum; 
    //根据列编号返回CColumn对象 
    CColumn col = cols.GetItem(varColNum); 
    //读取列的值 
    varValue = col.GetValue(); return varValue.bstrVal; 
    }
    这是正确的,参考一下
      

  3.   

    多谢各位高手指教,但是我按照上面所说的方法改了,还是有这个问题。我跟踪调试了一下,出现的错误是:5F58A2D3 int 3这一行
    ERROR: symbol "this" not found;
    下面是我的代码,各位高手看看是怎么回事哈。
    void CAdoTestView::OnHeadClickDatagrid(short ColIndex) 
    {
    // TODO: Add your control notification handler code here
    //得到DataGrid中表示各列信息的类
    CColumns cols = m_DataGrid.GetColumns();
    //此参数用来得到具体某一列
    VARIANT index;
    //值为index

    //类型为整型
    index.vt = VT_I4;
    index.intVal = ColIndex;
    //得到点击列
    CColumn col = cols.GetItem(index); //GetItem(index);
    //得到此列的名字
    m_strTableName = col.GetCaption();
    }
      

  4.   

    Debug Assertion Failed:
    这是断言失败,你可以使用try catch把错误抓出来看看