2009-02-26 12 views
1

Je tente de filtrer une colonne dans un Obout Grid qui a été lié à un modèle.Obout Grille filtrant une colonne avec du texte rempli par un modèle

Contexte

Le DataField de la colonne est simplement un ID de clé étrangère à une table History qui contient ce sont des états essentiellement d'un certain objet (comme le nom, numéro d'inventaire, numéro de série, Informations complémentaires. , etc.) Si un utilisateur devait modifier un certain état de l'objet (par exemple Info complémentaire), un nouvel enregistrement serait ajouté à la table History, et ce nouvel enregistrement est ce qui est référencé par la clé étrangère susmentionnée. Pendant la liaison de données sur la colonne, je compare l'état de l'historique le plus récent avec celui immédiatement précédent, et je renvoie une description en anglais de ce qui a changé (par exemple "Le champ d'information supplémentaire de cet appareil a été modifié"). il peut être affiché sous forme de texte dans chaque ligne.

Le problème

La grille elle-même semble filtrer uniquement les données du côté client qui faisait partie de l'DataBind d'origine (dans ce cas, il suffit de l'ID clé étrangère à l'enregistrement de l'histoire). Je suis capable de filtrer par ce nombre, bien qu'il n'apparaisse pas réellement dans la vue de la colonne parce qu'il a été remplacé par la description anglaise.

Grille Markup

<cc1:Grid ID="grdHistory" runat="server" AutoGenerateColumns="False" DataSourceID="dsHistory" AllowFiltering="true"> 
    <Columns> 
     <!-- other columns snipped --> 
     <cc1:Column DataField="DeviceHistoryID" HeaderText="Event description" Width="450" Wrap="true" 
      Index="3"> 
      <TemplateSettings TemplateId="tplEventDescription" /> 
     </cc1:Column> 
    </Columns> 
    <Templates> 
     <cc1:GridTemplate ID="tplEventDescription" runat="server"> 
      <Template> 
       <%# FormatEventDescription(Container.DataItem) %> 
      </Template> 
     </cc1:GridTemplate> 
    </Templates> 
</cc1:Grid> 

FormatEventDescription(Hashtable Records) est la fonction qui retourne la version anglaise des modifications apportées à l'état de l'objet que je souhaite filtrer.

Question

est-il un moyen de filtrer par la description anglaise dans la colonne? À ce stade, toute idée (défauts de conception, etc.) est la bienvenue. J'ai essayé à la fois de passer au crible toute leur documentation et j'ai même essayé de contacter leur support concernant ce problème mais je n'ai pas encore reçu de réponse.

Répondre

0

Je ne connais pas grand-chose au contrôle tiers d'Obout, mais semble être sous-classé à partir du contrôle GridView .net. Vous pouvez donc à nouveau poser la question, mais utilisez à la place gridview où se trouve le mot Obout, car apparemment peu de gens utilisent ce contrôle particulier. Après avoir brièvement analysé les événements de la grille, je pense que vous pourriez essayer d'utiliser l'événement RowDataBound pour effectuer les transformations nécessaires. Vous pouvez également utiliser l'événement Selected du datasource pour transformer les données.

Si vous êtes en mesure de transformer les données dans leur état lisible final plus tôt, vous pourrez peut-être le filtrer plus tôt dans la chaîne d'événements qui se produisent.

+0

Cette question n'est plus d'actualité puisque j'ai refait toute la page mais je vais vous donner la prime puisque personne d'autre n'a même essayé. –