Написание источника данных SQL в коде на C # для использования кода за значением - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь заполнить таблицу данных с использованием источника данных SQL на основе параметризованных входов. Хитрость заключается в том, что значение параметризованного ввода доступно только в коде, поэтому я вынужден написать источник данных SQL в кодеза страницей

Как мне это сделать (я использую 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 Ответ

7 голосов
/ 18 мая 2011

Вам нужно обработать событие 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;
}
...