Master-Detail GridView in Single Page
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="MasterDetailsSinglePage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView id="gridMaster"
runat="server"
GridLines="None"
AutoGenerateColumns="False"
DataKeyNames="CategoryID"
DataSourceID="sourceCategories"
OnRowDataBound="gridMaster_RowDataBound">
<AlternatingRowStyle BackColor="PaleGoldenrod"></AlternatingRowStyle>
<HeaderStyle Font-Bold="True" BackColor="Tan"></HeaderStyle>
<FooterStyle BackColor="Tan"></FooterStyle>
<Columns>
<asp:TemplateField HeaderText="Category">
<ItemStyle VerticalAlign="Top" Width="20%"></ItemStyle>
<ItemTemplate>
<br><b><%# Eval("CategoryName") %></b><br>
<br><%# Eval("Description" ) %><br>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Products">
<ItemStyle VerticalAlign="Top"></ItemStyle>
<ItemTemplate>
<asp:GridView id="DataGrid2"
runat="server"
AutoGenerateColumns="False"
BorderStyle="None">
<RowStyle ForeColor="#330099" BackColor="White"></RowStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="Product Name">
<ItemStyle Width="250px" />
</asp:BoundField>
<asp:BoundField DataField="UnitPrice" HeaderText="Unit Price" DataFormatString="{0:C}" />
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="DarkSlateBlue" BackColor="PaleGoldenrod"></PagerStyle>
</asp:GridView>
<asp:SqlDataSource ID="sourceCategories"
runat="server"
ConnectionString="<%$ ConnectionStrings:Northwind %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT * FROM Categories"/>
<asp:SqlDataSource ID="sourceProducts"
runat="server"
ConnectionString="<%$ ConnectionStrings:Northwind %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT * FROM Products WHERE CategoryID=@CategoryID">
<SelectParameters>
<asp:Parameter Name="CategoryID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
File: Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterDetailsSinglePage : System.Web.UI.Page
{
protected void gridMaster_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView gridChild = (GridView)e.Row.Cells[1].Controls[1];
sourceProducts.SelectParameters[0].DefaultValue = gridMaster.DataKeys[e.Row.DataItemIndex].Value.ToString();
object data = sourceProducts.Select(DataSourceSelectArguments.Empty);
gridChild.DataSource = data;
gridChild.DataBind();
}
}
}
Related examples in the same category