我现在要根据ID的不同对Repeater里面的TextBox控件进行只读
我在
private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DataRowView rowv = (DataRowView)e.Item.DataItem;
string ChannelID = rowv["ChannelID"].ToString();
IsView(ref Repeater1,true,e.Item.ItemIndex);
}
这里做了这个处理,就是通过验证进行处理,可是我在IsView里面写的就出错,
public void IsView(ref Repeater rep,bool flag,int itemindex)
{RepeaterItem items = rep.Items[itemindex]; //这里提示说索引超出范围。必须为非负值并小于集合大小。参数名: index
for(int i=0;i<item.Controls.Count;i++)
{
if(item.Controls[i].GetType().ToString().IndexOf("TextBox")!=-1)
{
//Response.Write("ttt");
((TextBox)item.Controls[i]).ReadOnly = true;
}
}
索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +91
System.Web.UI.WebControls.RepeaterItemCollection.get_Item(Int32 index) +10
Seaskyer.Modules.FdcSite.WebForm2.IsView(Repeater& rep, Boolean flag, Int32 itemindex)
Seaskyer.Modules.FdcSite.WebForm2.Repeater1_ItemDataBound(Object sender, RepeaterItemEventArgs e)
System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e) +110
System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +139
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +475
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +49
System.Web.UI.WebControls.Repeater.DataBind() +23
Seaskyer.Modules.FdcSite.WebForm2.getPage(DataTable dt)
Seaskyer.Modules.FdcSite.WebForm2.Page_Load(Object sender, EventArgs e)
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
那位兄弟知道是为什么吗