Je dois créer une clause WHERE pour mon LinqDataSource
qui dépend de l'utilisateur actuellement connecté. Bien sûr, j'ai accès à l'utilisateur actuellement connecté dans le code-behind et j'ai spécifiquement besoin de l'ID utilisateur pour récupérer uniquement les données qui lui appartiennent dans la base de données.ASP.NET LinqDataSource Clause WHERE
Il fonctionne très bien quand j'ajoute l'attribut Where
à la balise <asp:LinqDataSource />
mais étant donné que les contrôles serveur ne peuvent pas avoir <% %>
balises en eux, j'ai essayé de définir l'attribut Where
dans le code-behind, en OnLoad
, avant que les données de liaison GridView qui est connecté à ma source de données. Cependant, lors de la définition de l'attribut dans le code-behind, il semble n'avoir aucun effet. Cela fonctionne bien quand je le spécifie manuellement (et statiquement) dans le code ascx
, mais pas à partir du code-behind. Je suppose que je fais les choses dans le mauvais ordre ou au mauvais moment. Comment puis-je faire cela?
MISE À JOUR:
est venu avec ce hack. J'utilise une étiquette factice lblViewedUserID
avec Visible="false"
pour obtenir un contrôle à partir duquel je peux extraire l'ID utilisateur. J'ai mis le texte de cette étiquette du code-behind avant la liaison de données. J'ai également ajouté <WhereParameters>
avec <asp:ControlParameter />
avec un tas d'attributs.
<asp:LinqDataSource ID="dsLinqSource" AutoPage="true" AutoSort="true"
ContextTypeName="Ortrac.Common.Dbml.OrComDataContext"
EnableDelete="false" TableName="myTableName" EnableInsert="false"
EnableUpdate="false" runat="server" Select="new(Edited, Activity)"
Where="TheUserID.ToString().Equals(@ViewedUserID)"><%-- HACK! --%>
<WhereParameters>
<asp:ControlParameter Name="ViewedUserID" ControlID="lblViewedUserID"
Type="String" PropertyName="Text" />
</WhereParameters>
</asp:LinqDataSource>
<%-- Dummy label --%>
<asp:Label runat="server" ID="lblViewedUserID" Visible="false" />
Est-ce vraiment ainsi que vous programmez ASP.NET?
Votre approche m'a sauvé beaucoup de temps, je vous remercie! –