2013-07-08 90 views
-1

我想知道這段代碼有什麼問題。我正在使用SQLReportDataSource.SelectParameters.Add("@profileName", User.Identity.Name);將參數添加到ASPX頁面中的SQL Data Source。它使用User.Identity.Name來抓取當前登錄的用戶並將該值傳遞給ASPX SQL數據源,但DropDownList未顯示任何值,也沒有顯示任何錯誤。這甚至是從基於ASPX的數據源指定參數的正確方法嗎?DropDownList不顯示數據綁定值

即使當我修改SQLReportDataSource.SelectParameters以將值硬編碼爲我知道的事實存在並確實產生了我通過在SSMS中輸入SELECT查詢來測試的結果時,它不返回任何內容。例如:

string name = "name"; 
SQLReportDataSource.SelectParameters.Add("@profileName", name); 

我也嘗試從SqlDataReader抓取值,但同樣的事情。我哪裏錯了?

ASPX

<asp:SqlDataSource ID="SQLReportDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SFGSConnectionString1 %>" SelectCommand="SELECT [profileID], [profileName] FROM [vw_profile] WHERE [email protected]"> 
    <SelectParameters> 
     <asp:Parameter Name="@profileName" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
<asp:DropDownList ID="chooseProfile" runat="server" DataSourceID="SQLReportDataSource" DataTextField="profileName" DataValueField="profileID" /> 

後面的代碼

SQLReportDataSource.SelectParameters.Add("@profileName", User.Identity.Name); 

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SFGSConnectionString1"].ConnectionString); 
conn.Open(); 
SqlCommand cmd = new SqlCommand("SELECT * FROM vw_reports WHERE [email protected]", conn); 
cmd.Parameters.AddWithValue("@currentUser", User.Identity.Name); 
SqlDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    string memberID = reader["memberID"].ToString(); 
    int reportNum = Convert.ToInt32(reader["reportNumber"]); 
    reportNum++; 
    reportNumber.Text = reportNum.ToString(); 
} 
reader.Close(); 
conn.Close(); 
+1

爲什麼我會陷入低谷?!上帝這個地方有時候會讓我很難過。有一些很棒的社區成員,但遺憾的是還有更多的douchebags。 – Trido

回答

1

@當您指定參數

<asp:Parameter Name="profileName" Type="String" /> 

,你可以按照以下的DataSourceSelecting事件指定參數值不需要前綴

protected void SQLReportDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
{ 
    e.Command.Parameters["profileName"].Value = User.Identity.Name; 
} 
+0

修復它。非常感謝。我開始刪除'@'並嘗試它,但沒有,然後我注意到你的編輯,然後添加該方法以及'OnSelecting'事件,它的工作。你知道爲什麼我的代碼不起作用嗎? – Trido

+0

您已經在ASPX中添加了參數,現在您只需要設置它的值。 – Damith

+0

啊,對。謝謝。 – Trido

0

除了damith使用設置這樣 SQLReportDataSource.SelectParameters [ 「PROFILENAME」]默認值默認值= User.Identity.Name。

+0

我嘗試過,並得到了宣言標量錯誤。也許是因爲我在使用'@'?不確定。 – Trido