为什么在命名后rowcommand会失败?

时间:2016-02-25 20:03:35

标签: c# asp.net c#-4.0 gridview pagination

为什么我的gridview rowcommand在分页后会抛出错误?

即。我有一个pagesize为15的gridview。每行有一个按钮选择,直到分页,即在分页后,rowcommand中的代码开始抛出错误。为什么?

protected void grdViewCases_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {

            //int index = MngOtherFunctions.CalculatedIndex(sender as GridView, Convert.ToInt32(e.CommandArgument));
            int index = Convert.ToInt32(e.CommandArgument);
            int CaseID = Convert.ToInt32(grdViewCases.DataKeys[index % grdViewCases.PageSize].Value);
            short UserID = Convert.ToInt16(Session["UserID"]);

            if (e.CommandName == "cmdSelect")
            {
                HdnFieldCaseID.Value = Convert.ToString(CaseID);
                txtBoxCaseNo.Text = grdViewCases.Rows[index].Cells[1].Text;

                ShowCasesByCaseID(CaseID);
                grdViewCases.Visible = true;

            }

此行引发错误:

  

指数超出范围。

txtBoxCaseNo.Text = grdViewCases.Rows[index].Cells[1].Text;

1 个答案:

答案 0 :(得分:0)

这是因为indexnot是指您选择的行,而不是页面索引。值为0,这就是返回值超出范围的原因。

txtBoxCaseNo.Text = grdViewCases.Rows[index].Cells[1].Text;

对于我来说,我通过添加

检查发送给该方法的命令
string _commandName = e.CommandName;

如果您选择页码,它将返回"Page"