asp.net 2.0 では、グリッドビューにドロップダウンリストをネストできます。これは非常に簡単です。ここで話していることは次のとおりです。
各ドロップダウンリストには、異なるコンテンツがバインドされています。たとえば、northwind データベースでは、GRIDVIEW を使用して各カテゴリをドロップダウンリスト ドロップダウン ボックスの形式で表示できます。以下に全製品の実装方法を紹介します。
最初はページ部分のコードです。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<列>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
<asp:BoundField DataField="CategoryName" HeaderText="カテゴリ名" />
<asp:TemplateField HeaderText="Products">
<ItemTemplate>
< asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
分離コード セクションで、
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
if (!Page.IsPostBack)
{
、
Table[1] にカテゴリ
GridView1.DataSource = GetDataSet().Tables[1];
が含まれているためです。
}
プライベート DataSet GetDataSet()
{
string query = @"SELECT p.CategoryID,p.ProductID, p.ProductName FROM Products p
SELECT c.CategoryID,c.CategoryName FROM カテゴリ c";
string connectionString = "Server=localhost;Database=Northwind;user id=sa ;password=123456";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
上記のコードでは、まず典型的なデータセットを返し、それをグリッドビューにバインドします。最初の文は製品を返し、2 番目の文はすべてのカテゴリを返します。バインディング グリッドビューを使用する場合は、
GridView1.DataSource = GetDataSet().Tables[1];、最初のテーブル table のカテゴリ レコードをグリッドビューにバインドします。これは、row_databound イベントで実行できます。次のようなコード
protected void GridView1_RowDataBound(オブジェクト送信者、GridViewRowEventArgs e)
{
データテーブル myTable = new DataColumn
productIDColumn = new
DataColumn
productNameColumn
=
myTable.Columns.Add(productIDColumn);
= 新しい DataSet();
ds = GetDataSet();
int categoryID = 0;
String.Empty
if (e.Row.RowType == DataControlRowType.DataRow)
{
categoryID = Int32.Parse(e.Row.Cells[0].Text);
式 = "CategoryID = " +
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1")
; ds.Tables[0].Select(式);
foreach (行内の DataRow 行)
{
DataRow newRow = myTable.NewRow();
newRow["ProductID"] = row
["
ProductName"] = row["ProductName"]
;
}
データソース = myTable;
ddl.DataTextField = "製品名
"
ddl.DataBind(
)
;
ここでの原則はおおよそ次のとおりです。
まず、productid 列と productname 列を含むデータテーブルを作成し、それをグリッドビューにバインドしてから、
categoryID = Int32.Parse(e.Row.Cells[0].Text);
式 = "CategoryID = " + categoryID;
フィルター式を作成し、ここでは categoryID として指定して渡します。
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
DataRow[] 行 = ds.Tables[0].Select(式);
、カテゴリが特定の categoryID に等しいすべての製品を検索します。 最後に、データ行コレクションを作成します。
、特定のカテゴリにあるすべての製品をデータテーブルに追加し、最後にデータテーブルとドロップダウンリストをバインドして機能を実現します。