2009-09-09 156 views

回答

0

我已經結束了創建數據綁定事件的事件處理程序,並禁用命令列如下:

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; 
     } 
    } 
    } 
} 
1

如果您使用的是就地編輯行,那麼隱藏允許用戶編輯網格的控件將成爲問題。

您可以通過使用事件處理程序鉤住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; 
     } 
    } 
    } 
+0

有沒有RowDataBoundEvent?請參閱http://www.devexpress.com/Support/Center/p/Q133547.aspx。 – macleojw 2009-09-09 16:24:36

+0

eee ..對不起,我認爲這是一個錯字。我沒有意識到有一個名爲「ASPxGrid」的第三方組件。那麼,另一種方法是在網格結束數據綁定之後遍歷所有行,而不是逐行。 – womp 2009-09-09 16:39:12

+0

ASPxGridView是一個gridview組件,它是DevExpress Visual Studio插件的一部分。 – macleojw 2009-09-10 08:17:39

0

如果要啓用EditButton有條件僅對某些行,有一個例子CQ66919在DevExpress.com。

另外,它們參考示例E366更新版本的ASPxGridView