0

ユーザー ロールに基づいて個々のセルを無効にできる、データ バインドされた GridView コントロールがあります。これは最初のページでのみ機能します。

private void LimitAccessToGridFields()
    {
        if (User.IsInRole("Processing")) return;

        foreach (GridViewRow gridViewRow in gvScrubbed.Rows)
        {
            var checkBox = ((CheckBox) gridViewRow.FindControl("cbScrubbed"));
            checkBox.Enabled = false;

            // ButtonField does not have an ID to FindControl with
            // Must use hard-coded Cell index
            gridViewRow.Cells[1].Enabled = false; 
        }
    }

このメソッドは、機能する Page_Load で呼び出します。PageIndexChaging および PageIndexChanged イベント ハンドラーで試しましたが、機能しません。デバッグ中、行の両方のコントロールで Enabled が false に正常に設定されているように見えます。私の目標は、ページを変更した後、ユーザーの役割に応じてこれらのフィールドを無効にすることです。これはどのように達成されるべきですか?

4

2 に答える 2

0

これは、RowDataBound イベント ハンドラーで行う必要があることがわかりました。

if (e.Row.RowType == DataControlRowType.DataRow)
{
   // details elided ...

   // Limits the access to grid fields.
   if (!User.IsInRole("PROCESSING"))
   {
       cbstuff.Enabled = false; // a checkbox
       e.Row.Cells[1].Enabled = false; //a link button
   }
}
于 2010-10-25T22:02:36.737 に答える