実装の効果: メインテーブルの行を選択し、テーブルから行の詳細を取得します。
方法 1: コードの実装。
ページに GridView と DetailView を配置します。データを GridView にバインドして主キーを設定し、SelectedIndexChanged イベントにコードを記述します。選択内容が変更されると、DetailView も対応する Detail に変更されます。
具体的なコード:
システムを使用する;
System.Data を使用します。
System.Configuration を使用します。
System.Collections を使用します。
System.Web を使用します。
System.Web.Security を使用します。
System.Web.UI を使用します。
System.Web.UI.WebControls を使用します。
System.Web.UI.WebControls.WebParts を使用します。
System.Web.UI.HtmlControls を使用します。
System.Data.SqlClient を使用します。
パブリック部分クラス MasterDetail2 : System.Web.UI.Page
{
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
if (!Page.IsPostBack)
{
文字列 SQL = "SELECT * FROM [注文]";
GridView1.DataSource = バインディング(SQL);
GridView1.DataKeyNames = 新しい文字列[] { "注文ID" };
GridView1.DataBind();
}
protected void GridView1_SelectedIndexChanged(オブジェクト送信者, EventArgs e
)
{
文字列 OrderID = Convert.ToString(GridView1.SelectedValue);
文字列 SQL = "SELECT * FROM [OrderDetails] WHERE [OrderID]='" + OrderID + "'";
詳細ビュー1.DataSource = バインディング(SQL);
詳細ビュー1.DataBind();
}
/**//// <概要>
/// SQL ステートメントを実行してデータ テーブルを返します
/// </概要>
/// <param name="SQL">実行する SQL 文</param>
/// <returns>DataTable</returns>
保護された DataTable バインディング (文字列 SQL)
{
SqlConnection myConn = new SqlConnection(ConfigurationManager.ConnectionStrings["AppConnectionString1"].ConnectionString);
DataTable dt=new DataTable();
SqlDataAdapter myAdapter = new SqlDataAdapter(SQL, myConn);
myAdapter.Fill(dt);
dt を返します
。
}
方法 2: ページ上に GridView と DetailView を配置するようにコントロール プロパティを設定し、それぞれをデータ ソースに対応させます。これは、GridView の SelectedValue を DetailView のデータ ソースの SelectCommand のパラメータとして使用する限り実現できます。
<パラメータの選択>
<asp:ControlParameter ControlID="EmployeesGridView" Name="AddressID" PropertyName="SelectedValue"
Type="Int32" />
</選択パラメータ>
どちらの方法も非常に単純で、方法 2 は基本的にコード不要で、方法 1 はより柔軟な制御が可能です。