質問

一部のユーザーに読み取りアクセスを許可し、他のユーザーに書き込みアクセスを許可するASPxGridViewがあります。理想的には、これはActive Directoryグループに基づいています。
どうすればいいですか?

役に立ちましたか?

解決 2

次のように、DataBoundイベントのイベントハンドラーを作成し、コマンド列を無効にしました:

protected void ASPxGridView1_DataBound(object sender, EventArgs e)
{ 
  if (!User.IsInRole(ConfigurationSettings.AppSettings["EditActiveDirectoryGroup"]))
  {
    foreach (GridViewColumn c in ASPxGridView1.Columns)
    {
      if (c.GetType() == typeof(GridViewCommandColumn))
      {
        c.Visible = false;
      }
    }
  }
}

他のヒント

行のインプレース編集を使用している場合、コントロールを非表示にすることで、ユーザーがグリッドを編集できるようになります。

これを行うには、イベントハンドラーでGridViewのRowDataBoundイベントにフックし、ユーザーのロールを確認します。チェックに失敗した場合は、編集コントロールを非表示にします。

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      if (!Roles.IsUserInRole("Admin"))
      {
        // Hide the edit controls.
        // This would be your "Edit" button or something.
        e.Row.Cells[1].Controls[0].Visible = false;  
      }
    }
  }

特定の行に対してのみ EditButton を条件付きで有効にする場合は、 CQ66919 をDevExpress.comでご覧ください。

さらに、新しいバージョンの E366 の例を参照しています。 ASPxGridView

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top