2016-06-30 1 views
0

J'ai un télégramme Radar Telerik. Je souhaite désactiver les colonnes de lien hypertexte dans l'événement de chargement de page lorsqu'une condition spécifique est vraie. Je reçois l'ID de rôle de la base de données et, sur la base de l'ID de rôle, souhaite désactiver les colonnes de lien hypertexte dans l'événement de chargement de page. mon code est iciComment désactiver la colonne d'hyperlien de Telerik radgrid lorsqu'une condition spécifique est vraie

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

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

quand la page se charge, il obtient l'identifiant de rôle, mais ne va pas dans l'instruction foreach. S'il vous plaît help.thanks à l'avance ...

Répondre

0

Vous devez obtenir les éléments dans le MasterTableView. Vérifiez également le nom unique de la colonne Lien hypertexte. Est-ce réellement "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

Où avez-vous placé votre boucle foreach? Dans la méthode Page_Load? Cela peut ne pas fonctionner parce que RadGrid a son propre cycle de vie et les événements se produisent dans une séquence particulière.

Ce que vous pouvez faire à la place est d'appliquer votre condition dans l'événement ItemDataBound.

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