日期:2014-05-19  浏览次数:20514 次

DataGrid中使用findcontrol()方法的问题
我不太明白下面这段代码中的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();
}

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