0

「if (e.Row.RowType == DataControlRowType.DataRow)」をチェックしたと思いますが、「編集」はセル[3]「削除」はセル[4]であり、編集ボタンをクリックすると機能しません。自分

指定された引数は有効な値の範囲外です。パラメーター名: index 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ArgumentOutOfRangeException: 指定された引数が有効な値の範囲外でした。パラメータ名:インデックス

ソース エラー:

252 行目: LinkBut​​ton lkDelete = (LinkBut​​ton)gv.Rows[i].Cells[4].Controls[0];

どこが間違っているのか本当にわかりません....

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                GridView gv = (GridView)sender;

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    for (int i = 0; i < gv.Rows.Count; i++)
                    {
                        LinkButton lkDelete = (LinkButton)gv.Rows[i].Cells[4].Controls[0];
                        lkDelete.OnClientClick = "return confirm(' Are you sure you want to delete this item?');";
                    }
                }
            }
4

2 に答える 2

0

行がバインドされるたびに各行をループしているようです。ループを削除します。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    LinkButton lkDelete = (LinkButton)gv.Rows[i].Cells[4].Controls[0];
    lkDelete.OnClientClick = "return confirm(' Are you sure you want to delete this item?');";
}

または、コード ビハインドではなく GUI で削除の確認を追加します。

<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="deleteButton" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" OnClientClick="return confirm('Delete this item?');" />
</ItemTemplate>
</asp:TemplateField>
于 2013-04-04T03:42:38.220 に答える
0

まず、すべてのデータ行が GridView コントロールのデータにバインドされると、 RowDataBoundイベントが発生します。したがって、現在行っているようにグリッドをループする必要はありません。

第二に、インデックスが範囲外でない限り、コードは見つかったように見えます。これはおそらくコントロール[0]にあります。私の提案は、代わりに FindControl を使用することです。

  protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
  {
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
        LinkButton lkDelete = (LinkButton)e.Row.Cells[4].FindControl("lkDeleteId");
        lkDelete.OnClientClick = "return confirm(' Are you sure you want to delete this item?');";
     }
  }

編集:

ヘッダー、フッター、またはページャー行でこれを行いたくないため、実行中の操作を実行する前にRowTypeを確認する必要があります。

于 2013-04-04T03:59:56.587 に答える