2010-08-18 7 views
0

J'ai un ensemble d'entités de NotificationTemplates, et chacun d'entre eux a une collection de SmsTemplate entités. Lorsque vous modifiez ou affichez un NotificationTemplate, j'ai un lien vers View SMS Templates. Ce lien me conduit à une vue de liste pour l'ensemble d'entités SmsTemplates, filtré pour le NotificationTemplate que je visualisais.Désactiver le filtrage sur une vue de liste de données dynamiques

Comment puis-je empêcher l'utilisateur de changer ce filtre pour afficher SmsTemplates pour une autre NotificationTemplate? Autrement dit, je veux le filtre, mais il doit être en lecture seule. La liste déroulante ne doit tout simplement pas tomber, elle doit simplement afficher le nom du NotificationTemplate auquel appartiennent ces SmsTemplates. Pour afficher SmsTemplates pour un autre NotificationTemplate, l'utilisateur doit cliquer sur View SMS Templates à partir de cet autre modèle.

Répondre

1

Le code-behind du filter template indique au filtre de récupérer sa valeur dans la chaîne de requête. Il vérifie la propriété DefaultValue et, si elle est définie sur une valeur, l'affecte au filtre. Ce que vous voulez faire est d'ajouter une logique qui rend le filtre en lecture seule lorsque DefaultValue a une valeur. Le moyen le plus simple de le rendre en lecture seule est de rendre le contrôle désactivé. Voici comment vous le feriez pour le défaut ForeignKey.ascx.cs mise en œuvre:

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     if (!Column.IsRequired) 
     { 
      DropDownList1.Items.Add(new ListItem("[Not Set]", NullValueString)); 
     } 
     PopulateListControl(DropDownList1); 
     // Set the initial value if there is one 
     string initialValue = DefaultValue; 
     if (!String.IsNullOrEmpty(initialValue)) 
     { 
      DropDownList1.SelectedValue = initialValue; 
      DropDownList1.Enabled = false; 
     } 
    } 
}