Mega Code Archive

 
Categories / ASP.Net / Data Binding
 

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();     }   } }