<html>
<title>Master~Details Using GridViews Bound to SqlDataSource Controls</title>
<link rel="stylesheet" href="/shared/netdemos.css">
<script language="C#" runat="server">
void Page_Load ( object src, EventArgs e ) {
if ( !IsPostBack ) {
// do only on initial page load
lstCustomers.SelectedIndex = 0;
lstCustomers.DataBind ( );
ordersGrid.SelectedIndex = 0;
ordersGrid.DataBind ( );
detailsGrid.DataBind ( );
}
}
</script>
<body>
<!-- #include virtual="~/shared/top.inc" -->
<div class="header"><h2>Master~Details Using GridViews Bound to SqlDataSource Controls</h2></div>
<hr size=1 width=92%>
<center>
<form runat="server">
<p>Select Customer:
<asp:dropdownlist id="lstCustomers" runat="server"
datasourceid="customers"
datatextfield="CompanyName"
datavaluefield="CustomerId"
autopostback />
<p class="small">Click an invoice ...
<asp:gridview id="ordersGrid" runat="server"
datasourceid="invoices"
datakeynames="OrderID"
width=80% cellpadding=5 font-size="9pt"
gridlines="vertical"
alternatingrowstyle-backcolor="whitesmoke"
autogeneratecolumns=false>
<headerstyle backcolor="lightsteelblue"
font-bold height=25
horizontalalign="center" />
<selectedrowstyle backcolor="lightgreen" />
<columns>
<asp:buttonfield headertext="Invoice"
datatextfield="OrderID"
commandname="Select" />
<asp:boundfield headertext="OrderDate"
datafield="OrderDate"
htmlencode=false
dataformatstring="{0:d}" />
<asp:boundfield headertext="ShippedDate"
datafield="ShippedDate"
htmlencode=false
dataformatstring="{0:d}" />
<asp:boundfield headertext="SalesPerson"
datafield="SalesPerson" />
<asp:boundfield headertext="SaleAmount"
datafield="SaleAmount"
htmlencode=false
dataformatstring="{0:n}"
itemstyle-horizontalalign="right" />
</columns>
</asp:gridview>
<p class="small">... to see order details
<asp:gridview id="detailsGrid" runat="server"
datasourceid="orders"
autogeneratecolumns=false
width=80% cellpadding=5 gridlines="vertical"
font-size="9pt" enableviewstate=false
alternatingrowstyle-backcolor="whitesmoke">
<headerstyle backcolor="lightsteelblue"
font-bold height=25
horizontalalign="center" />
<columns>
<asp:boundfield headertext="Invoice"
datafield="OrderId" />
<asp:boundfield headertext="Product Name"
datafield="ProductName" />
<asp:boundfield headertext="Quantity"
datafield="Quantity"
itemstyle-horizontalalign="right" />
<asp:boundfield headertext="Unit Price"
datafield="UnitPrice"
htmlencode=false
dataformatstring="{0:c}"
itemstyle-horizontalalign="right" />
<asp:boundfield headertext="Discount"
datafield="Discount"
htmlencode=false
dataformatstring="{0:n}"
itemstyle-horizontalalign="right" />
<asp:boundfield headertext="Net Amount"
datafield="Net Amount"
htmlencode=false
dataformatstring="{0:c}"
itemstyle-horizontalalign="right" />
</columns>
</asp:gridview>
<asp:sqldatasource id="customers" runat="server"
datasourcemode="datareader"
selectcommand="SELECT DISTINCT CustomerId, CompanyName FROM [Orders Summary]"
connectionstring="<%$ ConnectionStrings:aspnet %>" />
<asp:sqldatasource id="invoices" runat="server"
selectcommand="SELECT * FROM [Orders Summary] ORDER BY OrderID"
filterexpression="CustomerID = '{0}'"
connectionstring="<%$ ConnectionStrings:aspnet %>">
<filterparameters>
<asp:controlparameter controlid="lstCustomers"
propertyname="SelectedValue" />
</filterparameters>
</asp:sqldatasource>
<asp:sqldatasource id="orders" runat="server"
datasourcemode="datareader"
selectcommand="SELECT * FROM [Order Details Extended] WHERE OrderID = @OrderID"
connectionstring="<%$ ConnectionStrings:aspnet %>">
<selectparameters>
<asp:controlparameter controlid="ordersGrid"
name="OrderID" type="int32"
propertyname="SelectedValue" />
</selectparameters>
</asp:sqldatasource>
</form>
</center>
<hr size=1 width=92%>
<!-- #include virtual="~/shared/viewsrc.inc" -->
</body>
</html>