我不太明白下面这段代码中的Label classname=(Label)e.Item.FindControl("Label1");是什么意思,为什么e前面要有个(Label),还有就是参数e是代表什么呢,感觉好象很模糊啊??那位能帮小弟的忙.....public void MyDataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = e.Item.ItemIndex;
Label classname=(Label)e.Item.FindControl("Label1");
Session["oldclass"]= classname.Text.Trim();
ClassName.Text = classname.Text.Trim();
getClass();
}

解决方案 »

  1.   

    这是绑定事件,e代表当前行,你要找到一行一行的找到label 前面加的(Label)是强制转换
      

  2.   

    你需要Label 那个e.Item.FindControl("Label1")是个object
    你当然要转换啊
      

  3.   

    那我来总结一下好了!
    第一你需要什么类型的而=后面返回的又不是你想要的类型就需要一个强制转化
    比如当前你需要的是一个label 这个label是从dg中找到的控件,为了更好的让后面的代码知道这是一个label需要强制转化
    第二:e代表你当前的母控件的行,他要从行里的items也就是项中寻找你想要的控件
    有的时候你这样还不能够转化需要这样一个循环
    for(int i = 0; i<dg1.items.count; i++)
    {
        Label lb1 = (Label)dg.items[i].Findcontrols("lb**")
    }
    遇到问题可以多看看!祝你好运!
      

  4.   

    认同前面2位,
    c语言中有类型隐式转化,
    这种(type)称牵制转换
      

  5.   

    ==
    e.Item.FindControl("Label1");//表示在当前对象找到的对象Label1
    ==
    (Label)e.Item.FindControl("Label1");//显式转换为Label类型
    ==
    e代表当前对象System.Web.UI.WebControls.DataGridCommandEventArgs 通俗点说就是当前编辑行