索引超出了asp.net gridview的范围

时间:2017-03-10 06:24:52

标签: c# asp.net gridview

我正在创建一个网络应用程序,其中我有一个gridview和预渲染方法,我有以下代码

public View getView(int position, View view, ViewGroup parent)
{
    final Filho filhoPosition = this.listaFilhos.get(position);
    view = LayoutInflater.from(this.context).inflate(R.layout.lista_filho,null);

    TextView textViewNomeFilho = (TextView) view.findViewById(R.id.textViewNomeFilho);
    TextView textViewTelefoneFilho = (TextView) view.findViewById(R.id.textViewTelefoneFilho);
    ImageView imageViewFotoFilho = (ImageView)  view.findViewById(R.id.imageViewFotoFilho);

    textViewNomeFilho.setText(filhoPosition.getNome());
    textViewTelefoneFilho.setText(filhoPosition.getTelefone());
    imageViewFotoFilho.setImageBitmap(filhoPosition.getFoto());

    final ImageButton imageButtonConfigFilho = (ImageButton) view.findViewById(R.id.imageButtonConfigFilho);
    imageButtonConfigFilho.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){

            filho = new Filho(filhoPosition.getIdFilho(),filhoPosition.getNome(),filhoPosition.getTelefone(),filhoPosition.getFoto(),filhoPosition.getLoginConfig());

            Intent it = new Intent(context, CadastrarFilhoActivity.class);
            it.putExtra("filho",filho);
            context.startActivity(it);
        }
    });
    return view;
}

但页面显示错误

  

指数超出范围。必须是非负数且小于   集合。参数名称:index

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.ArgumentOutOfRangeException:索引已经用完   范围。必须是非负的且小于的大小   采集。参数名称:index

在这一行

  

第329行:FileUpload fp =   (文件上传)dgvEdit.Rows [dgvEdit.EditIndex] .FindControl(" fpTask&#34);

以下代码有什么问题

1 个答案:

答案 0 :(得分:0)

显示此错误的原因是dgvEdit.Rows.Count<dgvEdit.EditIndex中的Line No 329

您可以使用类似

的条件
if (this.dgvEdit.EditIndex != -1 && dgvEdit.Rows.Count>=dgvEdit.EditIndex)
            {
                FileUpload fp = (FileUpload)dgvEdit.Rows[dgvEdit.EditIndex].FindControl("fpTask");
                if (fp != null)
                {
                    // You can apply condition here
                    fp.Enabled = true;
                }

            }

N.B:在将服务器控件呈现给页面之前,使用PreRender事件执行任何更新。在此事件期间,可以保存服务器控件的视图状态的任何更改。在渲染阶段进行的此类更改将不会保存。

我认为您应该使用RowDataBound