public DataTable removeTable(DataTable dt ,string c1,string c2)
{
int count =dt.Columns .Count ;
for(int i=0;i<dt.Columns .Count ;i++)
{
if ((dt.Columns [i].ToString ().Trim ()!=c1)&&(dt.Columns [i].ToString ().Trim ()!=c2))

    dt.Columns .Remove  (dt.Columns [i].ToString ().Trim ());
//dt.Columns .RemoveAt (i);  //下面这个也试过了,效果了一样。

}
               return dt;
}
我写了这么一个保留datatable 固定两列的方法。为什么出现datable 里面部分列被移除,部门列依然存在的情况,不能完全移除不需要的列,不知道哪里出问题的

解决方案 »

  1.   

     ''数据刷新
        Public Function BindGrid()
            ''量表名        Dim s_tab As String = Me.dropLbmc.Text
            Dim dg_que_congfig As DataTable
            ''开始页面数
            Dim start_rec As Integer = pager.PageSize * (pager.CurrentPageIndex - 1)
            ''最大页面数
            Dim max_rec As Integer = pager.PageSize
            ''表名
            Dim table_name As String = "que_config"
            Try
                dg_que_congfig = m_que_config.getPageRecordQue_configByStab(s_tab, start_rec, max_rec, table_name)
                Session("hmm_que_config") = dg_que_congfig.Copy
                ''去掉试卷ID列            dg_que_congfig.Columns.Remove("QUES_ID")
                dg_que_congfig.Columns.Remove("是否允许重来")
                dgrdConfig.DataSource = dg_que_congfig
                dgrdConfig.DataBind()
            Catch ex As Exception
                lbl_message.Text = "<IMG src='../images/@warn.gif'>" & ex.Message
            End Try
        End Function用的VB.NET,对你不知道有没有帮助,你看看吧
      

  2.   

    将上面的dt.Columns [i].ToString ().Trim ()
    改成
    dt.Columns[i].ColumnName
    ToString()输出的不是DataColumn类型名子,不是列名
      

  3.   

    另外,移除时,可直接用dt.Columns.Remove(dt.Columns[i])
      

  4.   

    对,用dt.Columns[i].ColumnName,而不是dt.Columns [i].ToString ().Trim ()
      

  5.   

    cha,还是自己找了原因,又有删除一列 column 列个数发生了变化导致列不能完全被删除 。自己解决了!
      

  6.   


    int[] ar = new int[dtResult.Rows.Count];
      for (int i = 0; i < dtResult.Rows.Count; i++)
      {
      if (dtResult.Rows[i][0].ToString() =="0")
      {
      ar[i] = i;
      }
      }  for (int num=ar.Length-1; num > -1 ;num-- )
      {
      dtResult.Rows[num].Delete();
      }把Rows改成columns
      

  7.   


            public DataTable removeTable(DataTable dt, string c1, string c2)
            {
                int count = dt.Columns.Count;
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    if ((dt.Columns[i].ColumnName.Trim() != c1.Trim()) && (dt.Columns[i].ColumnName.Trim() != c2.Trim()))
                    {
                        dt.Columns.Remove(dt.Columns[i].ColumnName);
                    }
                }
                return dt;
            }复制以上代码
      

  8.   

    for (int i = 0; i < dtSqlResult.Columns.Count; i++)//列
                {
                    int j = 0;
                    for (; j < dtSqlResult.Rows.Count; j++)//行
                    {
                        if (dtSqlResult.Rows[j][i].ToString().Trim() != "")
                        {
                            break;//
                        }
                    }
                    if (j == dtSqlResult.Rows.Count)//该列所有行都为空行
                    {
                        //emptyCols[emptyColsIndex++] = i;
                        //dtSqlResult.Columns.Remove(dtSqlResult.Columns[i]);
                        dtSqlResult.Columns.RemoveAt(i);
                    }
                }
    为什么移除不了空行?