#c# #asp.net #entity-framework-4 #sqldatasource
#c# #asp.net #entity-framework-4 #sqldatasource
Вопрос:
Я пытаюсь заполнить таблицу данных, используя SQL datasource на основе параметризованных входных данных.Сложность в том, что значение параметризованного ввода доступно только в исходном коде, поэтому я вынужден написать SQL datasource в исходном коде страницы
Как мне это сделать (я использую C # и ASP.Net 4.0)
Текущий код в asp.net страница для создания подключения к источнику данных sql является :
<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;
Спасибо!
Ответ №1:
Вам нужно обработать событие 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;
}