日期:2014-05-18  浏览次数:20508 次

FindControl问题
在DataList里面找控件(LinkButton)

查找语句写在ItemDataBound
LinkButton   lbtn2   =   UIHelper.FindLinkButton(e.Item,   "lbtnCheck ");
lbtn2.Enabled   =   false;

/*UIHelper.cs
public   static   LinkButton   FindLinkButton(Control   ctl,   string   sControlName)
{
        return   (LinkButton)FindControl(ctl,   sControlName);
}
*/

为什么找出来的LinkButton的形式是这样的:
lbtn2   =   {Text   =   "\r\n   审核未通过 "}

如果用这种写法是:
LinkButton   lbtn   =   (LinkButton)dlMain.Items[dlMain.EditItemIndex].FindControl( "lbtnCheck ");
报错说索引不能小于.....但是我看了索引是对的!

那么找控件应该放在哪个Command里面?希望大家帮帮忙,谢谢!



------解决方案--------------------
在ItemDataBound事件里,添加if (e.Item.ItemIndex > -1)

找控件一般写在OnEditCommand事件里,因为要修改数据,在编辑事件里找到控件
------解决方案--------------------
加上cell试试 ,dataList包含一个或多个cell[0]/cell[1]
LinkButton lbtn = (LinkButton)dlMain.Items[dlMain.EditItemIndex].Cell[0].FindControl( "lbtnCheck ");
------解决方案--------------------
LinkButton lbtn2 = UIHelper.FindLinkButton(e.Item, "lbtnCheck ");
lbtn2.Enabled = false;

/*UIHelper.cs
public static LinkButton FindLinkButton(Control ctl, string sControlName)
{
return (LinkButton)FindControl(ctl, sControlName);
}
*/

这样找能找到吗??

在DataList的那些事件里
private void Datalist2_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if (e.Item.ItemIndex != -1)
{
Button btn = (Button)e.Item.FindControl( "Updateb ");
if (btn != null)
{
btn.Attributes.Add( "onclick ", "javascript:return IsNull( " + btn.CommandArgument + "); ");
}
}
}

------解决方案--------------------
在编辑列中 也应该用
DataList1.Items[e.Item.ItemIndex].FindControl();

------解决方案--------------------
这个还得看你是在哪找控件吧```各个事件里的属性有的不同的````