Как переместить этот пример кода aspx в aspx.cs (для реализации кода позади)? - PullRequest
0 голосов
/ 04 июня 2011

У меня есть выпадающий список, который заполняется данными из базы данных SQL.Это то, что я мог бы иметь в файле aspx.Как переместить (насколько это возможно) код из файла aspx в файл aspx.cs, чтобы реализовать метод кода?Я имею в виду, по крайней мере, часть SELECT.Спасибо.

<asp:DropDownList ID="DropDownList1" ... runat="server"/>
...
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:Pubs %>"
SelectCommand="SELECT [au_id], [au_lname], [au_fname], [state] FROM [authors] WHERE    [state] = @state">
<SelectParameters>
<asp:ControlParameter Name="state" ControlID="DropDownList1"  PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>

Ответы [ 2 ]

1 голос
/ 04 июня 2011

предположим, что вы связываете сетку с источником данных SqlDataSource1, тогда вы можете перехватить событие SelectedIndexChanged в codebehind и получить данные для привязки сетки:

ASPX-файл:

<asp:DropDownList ID="DropDownList1" runat="server" 
         OnSelectedIndexChanged="ddlChanged" />

C # (код):

protected void ddlChanged(object sender, EventArgs e)
{
    var cs=..;//get connection string
    using(var con=new SqlConnection(cs))
    {
        using(var com=new SqlCommand(con))
        {
            com.Open();
            com.CommandType = CommandType.Text;
            com.CommandText="SELECT [au_id], [au_lname], [au_fname], [state] 
                 FROM [authors] WHERE [state] = @state";

            var state=....;//GET VALUE OF STATE FROM DROPDOWN
            var p = com.Parameters.Add("@state");//set other properties
            p.Value = state;

            using(var adptr=new SqlDataAdapter(com))
            {
                var dtb=new DataTable();
                adptr.Fill(dtb);
                grid.DataSource=dtb;
                grid.DataBind();
            }
        }
    }
}
0 голосов
/ 04 июня 2011

SelectCommand является свойством объекта источника данных, который вы используете. Они могут применяться в коде по мере необходимости, но вы можете захотеть сделать это в переопределенной функции страницы Init, так как это может использоваться довольно рано в жизненном цикле страницы asp.net. например, хотя я не уверен, где именно.

protected override OnInit(object sender, EventArgs e)
{
    dsMySource.SelectCommand = "SELECT [au_id], [au_lname], [au_fname], [state] FROM [authors] WHERE [state] = @state"

}

Вы также должны будете убедиться, что параметр @state правильно используется и в коде, к нему также можно обратиться как к свойству (dsMySource.SelectParameters).

...