我正在尝试使用基于参数化输入的SQL数据源来填充数据表。棘手的是参数化输入的值仅在后面的代码中可用,所以我被迫在代码中编写SQL数据源在页面后面
我该怎么做(我正在使用C#和ASP.Net 4.0)
用于创建sql数据源连接的asp.net页面中的当前代码是:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:LicensingConnectionString %>"
SelectCommand="SELECT * FROM [commissions] where username=@username "></asp:SqlDataSource>
我想在@username中使用的值在此代码后面的代码中检索
IPrincipal p = HttpContext.Current.User;
// p.Identity.Name : this is what we will use to call the stored procedure to get the data and populate it
string username = p.Identity.Name;
谢谢!
答案 0 :(得分:7)
您需要处理数据源的OnSelecting事件,并在那里设置参数的值。
在您的信息页中:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:LicensingConnectionString %>"
SelectCommand="SELECT * FROM [commissions] where username=@username"
OnSelecting="SqlDataSource1_Selecting" >
<SelectParameters>
<asp:Parameter Name="username" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
在你的代码隐藏中:
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@username"].Value = HttpContext.Current.User.Identity.Name;
}