错误:索引超出了范围.必须非负且小于集合的大小.参数名称:index
本文关键字:小于 集合 参数 index 索引 范围 错误 | 更新日期: 2023-09-27 18:11:04
当我销毁和创建数据表时,我得到下面的错误
RadioButton rdb2 = new RadioButton();
RadioButton rdb3 = new RadioButton();
rdb1 = (RadioButton)DataList1.Items[item.Id].FindControl("One");
rdb2 = (RadioButton)DataList1.Items[item.Id].FindControl("Three");
rdb3 = (RadioButton)DataList1.Items[item.Id].FindControl("Seven");
我所做的是基于用户选择,我从数据库中调用数据,并将其放入一个新的数据表中,我将其用作我的数据列表的DataScouce。
请帮我解决这个错误。我也看到了解决方案的链接,但没有帮助。
看起来您正在尝试引用DataList.Items
中确实存在于位置Item.Id
的项目。
确保DataList.Items
包含元素且Item.Id
具有有效值(且不大于DataList.Items
中的元素总数)
假设item.Id
是一个有效的整数,您可以检查item.Id
是否小于集合:
RadioButton rdb2 = new RadioButton();
if (item.Id <= DataList.Items.Count()) {
rdb2 = (RadioButton)DataList1.Items[item.Id].FindControl("Three");
}
DataList1.Items[item.Id]
可以为null, FindControl
也可以返回null,最好使用as
将其强制转换为另一种类型。如果不是给定类型,则不会引发异常。但是你需要在使用它之前检查null
if((item.Id < 0) || ((DataList1.Items.Count() -1) < item.Id)) return; // assume item.id is index and integer value
var dlItem = DataList1.Items[item.Id];
if(item !=null){
rdb1 = dlItem.FindControl("One") as RadioButton;
rdb2 = dlItem.FindControl("Three") as RadioButton;
rdb3 = dlItem.FindControl("Seven") as RadioButton;
}
我建议您按索引而不是按id访问项目。
RadioButton rdb2 = new RadioButton();
RadioButton rdb3 = new RadioButton();
rdb1 = (RadioButton)DataList1.Items[CurrentIndex].FindControl("One");
rdb2 = (RadioButton)DataList1.Items[CurrentIndex].FindControl("Three");
rdb3 = (RadioButton)DataList1.Items[CurrentIndex].FindControl("Seven");
当您在网格视图中启用分页时导致此错误。如果你想从网格中删除一条记录,那么你必须这样做。
int index = Convert.ToInt32(e. commandparameter);
Int I = index % 20;
//这是我的GridView的页面大小。
GridViewRow row = gvmainrid . rows [i];
int id = Convert.ToInt32(gvMainGrid.DataKeys[i].Value);
新的GetData () .DeleteRecord (id);
GridView1。DataSource = RefreshGrid();GridView1.DataBind ();
希望这能回答问题。