-1

我想知道这段代码有什么问题。我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();
4

2 回答 2

1

@指定参数时不需要前缀

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

DataSource Selecting您可以在事件上指定参数值,如下所示

protected void SQLReportDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["profileName"].Value = User.Identity.Name;
}
于 2013-07-08T03:23:22.710 回答
0

除了 damith 用于设置默认值,如 SQLReportDataSource.SelectParameters["profileName"].DefaultValue= User.Identity.Name;

于 2013-07-08T03:26:33.090 回答