索引超出范围。必须是非负并小于集合的大小。参数名称:索引 [英] Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

查看:138
本文介绍了索引超出范围。必须是非负并小于集合的大小。参数名称:索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我点击更新按钮我得到这个错误
我更新的单击事件

 保护无效btnUpdate_Click(对象发件人,CommandEventArgs E)
{
    INT IDX = Convert.ToInt32(e.CommandArgument);
    GridViewRow GR = gvResTasks.Rows [IDX];

在IDX价值高达19正常工作..when它大于19这个错误来..
你可以请帮我在此

Updatebutton.aspx
 /><%----%>

updatebutton.aspx.cs

 保护无效btnUpdate_Click(对象发件人,CommandEventArgs E)
{
   // INT IDX = Convert.ToInt32(e.CommandArgument);
    INT IDX = Convert.ToInt32(e.CommandArgument);
    GridViewRow GR = gvResTasks.Rows [IDX];    标签HF =(标签)gr.FindControl(hdEmployeeID);    字符串sEmpID = hf.Text;
    lblEmployeeID.Text = sEmpID;
    lblEmployeeID2.Text = sEmpID;    诠释行= gvResTasks.Rows.Count;
    为(中间体X = 0; X&下;行; X ++)
    {
        GridViewRow TR = gvResTasks.Rows [X];
        tr.CssClass =WhiteBack;
    }    ClearMessages();    gr.CssClass =TealBack;    字符串sSubTaskID = gr.Cells [0]。文本;
    lblSubTaskID.Text = sSubTaskID;    lblSubTaskName.Text = @ gr.Cells [1]。文本;    LoadSubTaskInfo();    单sProgress = 0;
    布尔书= Single.TryParse(lblActualProgress.Text,出sProgress);
    日期时间DPF = DateTime.Parse(lblPlannedFinish.Text);    如果(DPF> DateTime.Now)
    {
        btnFinish.Enabled = FALSE;
    }
    否则,如果(DPF< = DateTime.Now)
    {
        如果(sProgress>为100)
        {
            btnFinish.Enabled = FALSE;
        }
        其他
        {
            btnFinish.Enabled = TRUE;
        }
        //btnFinish.Enabled = TRUE;
    }    panelUpdate.CssClass =浮动;
    panelUpdate.Visible = FALSE;
    如果(gr.Cells [7]。文本!=真)
    {
        panelUpdate.Visible = TRUE;
    }
}


解决方案

没有必要使用 e.CommandArgument 找到 GridViewRow 。只是这样做

  GridViewRow GR =((按钮)发送方).NamingContainer为GridViewRow;

When i am click on update button i got this error my update click event

protected void btnUpdate_Click(object sender, CommandEventArgs e)
{
    int idx = Convert.ToInt32(e.CommandArgument);
    GridViewRow gr = gvResTasks.Rows[idx];

when idx value is upto 19 it works fine ..when it is greater than 19 this error came.. could you please help me on this

Updatebutton.aspx " /> <%----%>

updatebutton.aspx.cs

              protected void btnUpdate_Click(object sender, CommandEventArgs e)
{
   // int idx = Convert.ToInt32(e.CommandArgument);
    int idx = Convert.ToInt32(e.CommandArgument);
    GridViewRow gr = gvResTasks.Rows[idx];

    Label hf = (Label)gr.FindControl("hdEmployeeID");

    string sEmpID = hf.Text;
    lblEmployeeID.Text = sEmpID;
    lblEmployeeID2.Text = sEmpID;

    int Rows = gvResTasks.Rows.Count;
    for (int x = 0; x < Rows; x++)
    {
        GridViewRow tr = gvResTasks.Rows[x];
        tr.CssClass = "WhiteBack";
    }

    ClearMessages();

    gr.CssClass = "TealBack";

    string sSubTaskID = gr.Cells[0].Text;
    lblSubTaskID.Text = sSubTaskID;

    lblSubTaskName.Text = @gr.Cells[1].Text;

    LoadSubTaskInfo();

    Single sProgress = 0;
    Boolean bok = Single.TryParse(lblActualProgress.Text, out sProgress);




    DateTime dPF = DateTime.Parse(lblPlannedFinish.Text);

    if (dPF > DateTime.Now)
    {
        btnFinish.Enabled = false;
    }
    else if (dPF <= DateTime.Now)
    {
        if (sProgress >= 100)
        {
            btnFinish.Enabled = false;
        }
        else
        {
            btnFinish.Enabled = true;
        }
        //btnFinish.Enabled = true;
    }

    panelUpdate.CssClass = "float";
    panelUpdate.Visible = false;
    if (gr.Cells[7].Text != "True")
    {
        panelUpdate.Visible = true;
    }


}

解决方案

No need to use e.CommandArgument to find the GridViewRow. Just do this

GridViewRow gr = ((Button)sender).NamingContainer as GridViewRow;

这篇关于索引超出范围。必须是非负并小于集合的大小。参数名称:索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆