2011-06-04 16 views
0

私はドロップダウンリストを持っています。このドロップダウンリストには、SQLデータベースからのデータが入力されています。これは、私がaspxファイルにあるかもしれないものです。コードビハインド技術を実装するために、aspxファイルからaspx.csファイルにコードを(できるだけ)移動させるにはどうすればよいですか? 少なくともSELECT部分​​を意味します。おかげさまで このサンプルaspxコードをaspx.csに移動するにはどうすればよいですか?

<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> 

答えて

1

は、データソースSqlDataSource1とグリッドを結合している、あなたが分離コードでSelectedIndexChangedイベントをキャッチし、データは次のようにグリッドをバインドするために得ることができたとします

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

SelectCommandは、使用しているデータソースオブジェクトのプロパティです。これらは必要に応じてコードの後ろに適用できますが、asp.netページのライフサイクルの早い段階で使用されるため、オーバーライドされたInitページ関数で行うことができます。例えば、私は正確にどこにいるのかは分かりませんが。

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)としてもアクセスすることができるの背後にあるコードで正しく使用されていることを確認する必要があるとしています。

関連する問題