我在DataList的ItemCommand事件中写入如下代码:
int id = (int)DataList1.DataKeys[e.Item.ItemIndex];但是运行的时候点击DataList中的一个LinkButton时就显示:
索引超出范围。必须为非负值并小于集合大小。
参数名: index 
但是我这里面的取出的ID是数据库中一个自动生成的ID号不可能是负的啊。这到底错哪了?

解决方案 »

  1.   

    你在哪设置的DataKeys
    贴出来看下
      

  2.   

    <asp:Datalist  DataKeyField="id" 
      

  3.   

    DayKeys设置???
    我不知道啊,好像没有哪里设啊,这名代码是把当前选中行取出来吧?
      

  4.   

    必须在datalist中指定DataKeyField(这是数据源的一个字段) ,DataKeys这个集合才会保存这个字段对应的值,
    否则集合为空.所以报索引错误.
      

  5.   

    要么在你的初始化方法里加上 this.DataList1.DataKeyField = "你要的字段"; ,要么像2楼一样设置下就行了。
      

  6.   

    估计 lz没有设置DataKeyField 吧