索引超出范围。必须是非负并小于集合的大小。参数名称:索引 [英] Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
本文介绍了索引超出范围。必须是非负并小于集合的大小。参数名称:索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我点击更新按钮我得到这个错误
我更新的单击事件
保护无效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屋!
查看全文