ListCtrl如何根据某一列中某一行的内容得到行号,并删除次行比如,我第二列,中第N行有个数据10003
我想删除有10003的这一行

解决方案 »

  1.   

    http://blog.sina.com.cn/s/blog_4b44e1c00100d48z.html
      

  2.   

    用GetItemCount()可以获得列表中总共的行数。然后循环遍历整个列表。  
    用GetItemText(...),获得此行你要的那一项的内容,判断是否和10003相等。
    如果相等,保存这一行,然后删除这一行DeleteItem (int nItm)就好了。int t; //这个是你要判断的内容10003所在列表的列号。如果列表只有一列 那就是0
    int num=list.GetItemCount();
    int index;
    for(int i=0;i<num;i++)
    {
       CString str=list.GetItemText(i,t);
       if(str=="10003")
         {
             index=i;
              break;    
         }
    }list.DeleteItem(index,t);
    这就把内容是10003的哪一行给删除了..
      

  3.   


    for (int i=0; i<ListCtrl->GetItemCount(); i++)
    {
    if (ListCtrl->GetItemText(i, 1).Compare(TEXT("10003")) //检查每一行的第二列,是不是等于10003
    {
    ListCtrl->DeleteItem(i);
    }
    }
      

  4.   

    不能这样的 。如果这样一边遍历 一边删除的话,  总行数变化了, 只要deleteItem()了,那么总行数会自动更新,后面的行会依次往前移。所以必须等遍历完之后才能删除。
      

  5.   

    int iCol = 2;//第二列
    CString strBuf;
    for(int iLine=list.GetItemCount()-1;iLine>=0;iLine--)
    {
        strBuf = list.GetItemText(iLine,iCol);
        if(strBuf == "10003")
        {
           list.DeleteItem(iLine);
        }  
    }