2016-10-03 8 views
0

Ich habe an Webforms und Benutzerdaten in ASP.NET gearbeitet. Wenn sich ein Benutzer anmeldet, werden seine Daten abgerufen.So legen Sie SelectCommand fest, um 'WHERE' in den angemeldeten Benutzer zu ändern

Ich habe eine Tabelle, wo es die SqlDataSource von einem ASP-Markup-Code nimmt:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
    ProviderName="<%$ ConnectionStrings:DefaultConnection.ProviderName %>" 
    SelectCommand="SELECT [first_name], [last_name], [weight_data] FROM [userData] 
     WHERE [email]='[email protected]';"> 
</asp:SqlDataSource> 

ich das zur Zeit in E-Mail-String protokolliert werden kann durch <%: Context.User.Identity.GetUserName() %>

Wie würde ich setzen, dass in die WHERE-E-Mail Anweisung, damit ich die E-Mail des aktuell angemeldeten Benutzers übernehmen und sie durch '[email protected]' ersetzen kann, um sie in der SQL-Tabelle abzugleichen, um die anderen Daten zu erhalten?

Vielen Dank!

+0

möglicherweise dupe http://stackoverflow.com/questions/10540470/dynamic-query-in-asp-net-where-clause-in-sqldatasource – MikeM

+0

Danke für die Formatierung. Ich bin mir immer noch nicht sicher, wie ich es ersetzen würde, wenn ich den möglichen Betrogenen ansehe. Tue ich dasselbe, was er mit selectparameters mit <%: Context.User.Identity.GetUserName()%> drinnen macht? Ganz neu bei asp.net, so dass das Ersetzen von Variablen verwirrend ist. Danke, Alter. – Anj

Antwort

1

Verschiedene Möglichkeiten, wie: Sie können die in OnSelecting Parameter von asp gebaut verwenden: SqlDataSource

<asp:SqlDataSource ID="SqldsExample" runat="server" 
    SelectCommand="SELECT [first_name], [last_name], [weight_data] FROM [userData] 
      WHERE [email][email protected]" 
    OnSelecting="SqldsExample_Selecting"> 
    <SelectParameters> 
     <asp:Parameter Name="UserEmail" Type="String"/> 
</SelectParameters> 

In Code-behind

protected void SqldsExample_Selecting(object sender, SqlDataSourceCommandEventArgs e) 
{ 
     e.Command.Parameters["UserEmail"].Value = Context.User.Identity.GetUserName(); 
} 

andere Art und Weise:

SqlDataSource1.SelectParameters.Add("@UserEmail", Context.User.Identity.GetUserName()); 

Hoffe, das hilft!

+0

Vielen Dank Knospe. Aus irgendeinem Grund erscheint es als. 'Muss die Skalarvariable "@UserEmail" deklarieren.' – Anj

+0

Haben Sie beide Wege versucht? – Sami

+0

"@" ausschließen d. H. SqlDataSource1.SelectParameters.Add ("UserEmail", Context.User.Identity.GetUserName()); – Sami

Verwandte Themen