2016-06-30 28 views
0

Ich habe eine Telerik Radgrid. Ich möchte Hyperlinkspalten beim Laden der Seite deaktivieren, wenn eine bestimmte Bedingung erfüllt ist. Ich bekomme Rollen-ID aus der Datenbank und auf der Grundlage der Rolle ID möchten Hyperlink-Spalten beim Laden der Seite Ereignis deaktivieren. mein Code ist hierWie Telerik radgrid Hyperlinkspalte deaktivieren, wenn eine bestimmte Bedingung erfüllt ist

if(RoleId==3) 
{ 
btnsave.Enabled= false; 

    foreach(griddataitem item in RagGrid1.Items) 
    { 
    HyperLink edit = (hyperlink)item["EditHyperLinkColumn"].Controls[0]; 
    edit.Enabled = false; 
    } 
}  

, wenn die Seite geladen wird es die ID Rolle bekommt, aber innerhalb der foreach-Anweisung ging nicht. Bitte help.thanks im Voraus ...

Antwort

0

Sie müssen die Elemente in der MasterTableView erhalten. Überprüfen Sie auch den eindeutigen Namen der Hyperlinkspalte. Ist es tatsächlich "EditHyperLinkColumn"?

if(RoleID == 3) 
{ 
    btnsave.Enabled = false; 
    foreach(GridDataItem item in RadGrid1.MasterTableView.Items) 
    { 
     HyperLink edit = (HyperLink)item["EditHyperLinkColumn"].Controls[0]; 
     edit.Enabled = false; 
    } 
} 
2

Wo haben Sie Ihre foreach-Schleife eingefügt? In der Page_Load Methode? Dies funktioniert möglicherweise nicht, da RadGrid einen eigenen Lebenszyklus hat und Ereignisse in einer bestimmten Reihenfolge auftreten.

Was Sie stattdessen tun können, ist Ihre Bedingung in ItemDataBound Ereignis anzuwenden.

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     var item = (GridDataItem)e.Item; 
     var editlink = item.FindControl("EditHyperLinkColumn") as HyperLink; 
     if (editlink != null) 
     { 
      editlink.Enabled = false; 
     } 
    } 
}