http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchtopquestionsaboutaspnetdatagridservercontrol.asp

解决方案 »

  1.   

    foreach(DataGridItem dgi in this.DataGrid1.Items)
    {

    if ((dgi.ItemType == ListItemType.Item) || (dgi.ItemType ==ListItemType.AlternatingItem))
    {
    。。
      

  2.   

    用户控件中的控件好像无法直接在服务器端获取,只能获取用户控件本身,同时在客户端,用户控件中的控件的ID也发生了改变。所以你的写法都会失败的,你只能在事件中通过用户控件本身的ID获取用户控件本身的对象,然后利用这个对象获取你的用户控件内部设置为public属性的内部控件。再进行操作
      

  3.   

    *孟老大,,,,唉,我的英文很不好,没有在你提供的资料上找到我想要的。
    那里面有句话的意思好像是要把cb = (CheckBox)dgi.Cells[0].Controls[0];
    改成cb = (CheckBox)dgi.Cells[0].Controls[1];
    ??可是,实践证明,没用。
    *熊猫老大,你说的意思是,,,,没看明白。
    *只有零度老大说得我好像有点明白了,不过,是不是还有别的什么办法能动态生成模板列?否则也太麻烦了。并且能结合我那个实例具体说说好么?
      

  4.   

    换了种动态添加列的方法,这样就可以了。来着有分^_^
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    CheckBox cb=new CheckBox();
    cb.ID="cb1";
    Label lb=new Label();
    lb.ID="lb1";
    lb.Width=50;
    if(e.Item.ItemIndex!=-1)
    {
    e.Item.Cells[0].Controls.Add(cb);
    e.Item.Cells[1].Controls.Add(lb);
    }
    }