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();
------解决方案--------------------这个还得看你是在哪找控件吧```各个事件里的属性有的不同的````