C# DropDownList不显示数据绑定值

C# DropDownList不显示数据绑定值,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我想知道这个代码有什么问题。我正在使用SQLReportDataSource.SelectParameters.Add(“@profileName”,User.Identity.Name)向ASPX页面中的SQL数据源添加参数。它使用User.Identity.Name获取当前登录的用户并将该值传递给ASPX SQL数据源,但DropDownList未显示任何值,也未显示任何错误。这是从基于ASPX的数据源指定参数的正确方法吗 即使我修改了SQLReportDataSource.SelectPa

我想知道这个代码有什么问题。我正在使用
SQLReportDataSource.SelectParameters.Add(“@profileName”,User.Identity.Name)
向ASPX页面中的
SQL数据源添加参数。它使用
User.Identity.Name
获取当前登录的用户并将该值传递给ASPX SQL数据源,但
DropDownList
未显示任何值,也未显示任何错误。这是从基于ASPX的数据源指定参数的正确方法吗

即使我修改了
SQLReportDataSource.SelectParameters
,将值硬编码为我知道的某个事实存在的值,并生成我通过将SELECT查询输入SSMS测试的结果,它也不会返回任何结果。例如:

string name = "name";
SQLReportDataSource.SelectParameters.Add("@profileName", name);
我还尝试从
SqlDataReader
中获取该值,但情况相同。我哪里做错了

ASPX


@
指定参数时不需要前缀

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

除了damith之外,还可以像这样设置默认值
SQLReportDataSource.SelectParameters[“profileName”]。DefaultValue=User.Identity.Name

为什么我会被否决?!天哪,这个地方有时会把我烦死。有一些很棒的社区成员,但不幸的是,还有更多的垃圾桶。这就解决了问题。非常感谢。我首先删除了
@
并尝试了它,但什么也没做,然后我注意到了您的编辑,然后添加了方法以及选择
事件时的
,结果成功了。你知道为什么我的代码不起作用吗?你已经在ASPX中添加了参数,现在你只需要设置它的值。我实际上尝试了,但得到了声明标量错误。可能是因为我在使用
@
?不确定。
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();
<asp:Parameter Name="profileName" Type="String" />
protected void SQLReportDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["profileName"].Value = User.Identity.Name;
}