我想知道这段代码有什么问题。我SQLReportDataSource.SelectParameters.Add("@profileName", User.Identity.Name);
用来SQL Data Source
在 ASPX 页面中添加一个参数。它用于User.Identity.Name
获取当前登录的用户并将该值传递给 ASPX SQL 数据源,但DropDownList
没有显示任何值,也没有显示错误。这甚至是从基于 ASPX 的数据源中指定参数的正确方法吗?
即使我修改了SQLReportDataSource.SelectParameters
将值硬编码为我知道的事实存在并且确实产生了我通过将 SELECT 查询输入到 SSMS 中测试的结果,它也没有返回任何内容。例如:
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 profileName=@profileName">
<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 profileName=@currentUser", 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();