c# - 索引超出范围。必须是非负数且小于集合的大小

标签 c# asp.net

我在跟踪我的数据 key 时遇到此错误。我不确定为什么我的数据 key 索引超出范围。这是我的代码:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            var dataKeys = GridView1.DataKeys[e.Row.RowIndex];
            dataKeys.Value.ToString();
            Label1.Text = "The key field value for the displayed record is " + dataKeys.Value.ToString();
        }

GridView 的页眉部分:

        </ItemTemplate>

        </asp:TemplateField>
    </Columns>
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" 
         />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#999999" />
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>

<script language="javascript" type="text/javascript">
    function viewProfile(selectedRowIndex, firstName) {
        //alert(firstName);
        //var customGridView = document.getElementById('<%= CustomGridView.ClientID %>');
        var customGridView = document.getElementById('GridView1');
        if (customGridView) {
            var row = customGridView.rows[parseInt(selectedRowIndex) + 1];
            //var cell = customGridView.rows[parseInt(selectedRowIndex) +   1].cells[0];
            //            alert(row.cells[0].innerHTML);
            //            alert(row.cells[1].innerHTML);
            //            alert(row.cells[2].innerHTML);
            //            alert(row.cells[3].innerHTML);
            //            alert(row.cells[4].innerHTML);
            window.open('detatil.aspx?coaid=' + row.cells[1].innerHTML + '&fnomia=' + row.cells[2].innerHTML, "", "scrollbars=no,height=300,width=300");
        }
    }
</script>

错误是: 索引超出范围。必须为非负数且小于集合的大小。 参数名称:索引

最佳答案

如果我没记错的话,该事件是针对标题和其他非数据行触发的。有一个属性可以知道行的类型。非数据行的索引是-1。添加此以检查行的类型:

 if (e.Row.RowType == DataControlRowType.DataRow) {
    // do something
 }

关于c# - 索引超出范围。必须是非负数且小于集合的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053291/

相关文章:

c# - Session.Add ("key",value) 和 Session ["key"] = value 之间有什么区别?

c# - 如何在 UWP 应用程序中获得省电模式?

c# - asp.net中如何在Web窗体之间传递信息

javascript - SignalR Javascript 客户端回调未被触发

c# - 如何在 ASP.NET 中获取节点的属性?

c# - 将 Mysql 数据填充到 asp 日历加载时间太长

c# - 如何获取继承类的属性

c# - 如何循环遍历二进制数的数字?

c# - 在代码隐藏中设置其 url 时无法呈现图像

c# - GridView ButtonField 后面的命令