2011-12-01 50 views
1

我的.aspx頁面上有一個SqlDataSource SelectCommand。使用代碼塊選擇User.Identify.Name

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
    SelectCommand="SELECT * FROM [UserResult]" 
    OnSelecting="SqlDataSource1_Selecting"> 
</asp:SqlDataSource> 

該聲明將grep表UserResult中的數據列表。

但是我只想列出屬於用戶的特定結果。

我重視的UserResult表是username一列,我試圖形成這樣一個SQL語句,但它似乎搜索用戶User.Identity.nAME

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:SODConnectionString %>" 
    SelectCommand="SELECT * FROM [UserResult] WHERE [username] LIKE 'User.Identity.Name'";" 
    OnSelecting="SqlDataSource1_Selecting"> 
</asp:SqlDataSource> 

可我知道我該怎麼辦它?

更新:

從從簡略的解決方案,我試圖實現以下:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:SODConnectionString %>" 
    SelectCommand="SELECT * FROM [UserResult] WHERE [username][email protected]" 
    OnSelecting="SqlDataSource1_Selecting"> 
    <SelectParameters> 
     <asp:Parameter Name="username" Type="String" DefaultValue='<%=User.Identity.Name %>' /> 
    </SelectParameters> 
</asp:SqlDataSource> 

但是我仍然不能夠根據用戶名來獲取數據。

我試圖硬編碼用戶名到username參數和它的工作:

任何人都可以幫助嗎?

<asp:Parameter Name="username" Type="String" DefaultValue="james" /> 

回答

2

您的陳述正在尋找User.Identity.Name,因爲它被設置爲一個字符串。

使用try代碼塊:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:SODConnectionString %>" 
    SelectCommand="SELECT * FROM [UserResult] WHERE [username][email protected]" 
    OnSelecting="SqlDataSource1_Selecting"> 
    <SelectParameters> 
     <asp:Parameter Name="username" Type="String" DefaultValue='<%=User.Identity.Name %>' /> 
    </SelectParameters> 
</asp:SqlDataSource> 

Embedded Code Blocks in ASP.NET Web Pages

+5

只要當心[Bobby Tables](http://xkcd.com/327/)。 – millimoose

+0

@Inddial - 非常好的一點!改變我的答案吧.. – Curt

+0

@Curt謝謝你,但我的datagrid仍然顯示空數據,儘管我的代碼更改爲你的。 – gymcode

0

這是沒有必要在.aspx文件中聲明的缺省值。您只能添加到文件後面的代碼。

protected void Page_Init(object sender, EventArgs e) 
{ 
    SqlDataSource1.InsertParameters["UserName"].DefaultValue = User.Identity.Name; 
}