比如说GridView 可以这样获取
                GridView dg = (GridView)dg1;                for (int i = dg.Columns.Count - 1; i >= 0; i--)
                {                    if (dg.Columns[i].GetType().Name == "ButtonColumn"                    || dg.Columns[i].GetType().Name == "CheckBoxField"                    || dg.Columns[i].GetType().Name == "CommandField")
                    {                        dg.Columns[i].Visible = false;                    }                }想知道DataList和Repeater是怎样获取他们中控件的类型的,谢谢。

解决方案 »

  1.   

     Label lbl1 = (Label)gvGoodsInfo.Rows[i].Cells[0].FindControl("Label2");
    这是获取girdview 中控件的类型   DataList和Repeater  跟这个相似
      

  2.   


    //DataList1是页面中的DataList控件 
    for (int i = 0; i < this.DataList1.Items.Count; i++)
            {
                string typeName = this.DataList1.Items[i].GetType().Name;
            }
      

  3.   

    Datalist和Repeater自由度较大,没有Gridview提供的显示checkbox、事件按钮等功能,需要自己完整写这些过程
    所以:Columns[i].GetType()没有什么实际意义
      

  4.   


    这个得到的是DatalistItem 不是所期待得到的。我也试过的
      

  5.   

      是的,datalist 和Repeater的自由度大,但是现在出现的问题就是在Datalist里有CheckBox框的,我要导出页面的数据,结果也会把CheckBox导出的,就想在得到如题那样,把这些列隐藏掉。如果是导出DataSet里的数据,问题是数据库的字段还要和Excel表中的标题进行配对,有点麻烦,就在网上找了个方法,结果我用的是DataList 去除不掉,所以才请教大家的怎么得到控件的类型,然后隐藏掉的。(说明下,其实我是在为导出Excel做准备的,谢谢楼上的回答哈)。大家有什么好的方法也可以给小弟发下,谢谢。就是要导出页面显示的数据,谢谢。
      

  6.   

    GridView  什么意思???
     高手 给解释下 楼主的问题··
    期待学习下
      

  7.   

    datalist中每个items中包含的控件都是一样的,所以可以这样找出所用内置控件:
     foreach (Control ct in DataList1.Items[0].Controls)
            {
                Response.Write( ct.GetType().Name);
            }
      

  8.   

    导出EXCEL,先设置模板列不可见再导出
    或使用excel模板,通过数组赋值
      

  9.   

    结合3楼的遍历每一个items ,再加上你的判断语句就可以了 。
      

  10.   

    要导出的话,只要随便判断items{0]的每columns内的controls[0]的type就可以了
      

  11.   

    现在就是想做个通用的,没有模板的,就是将页面的数据导出到Excel中,你说的那种也行的,就想做个通过的,只要传递一个Excel的路径和装载数据的控件名(如:DataList,Repeater,DataGridView)导出如页面所示的那样数据,谢谢你的回答。