<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<head>
<title>Handling Postbacks from Multiple Item Commands</title>
<link rel="stylesheet" href="/shared/netdemos.css">
<script language="C#" runat="server" src="fetchData_sql.cs" />
<script language="C#" runat="server">
void Page_Load ( object src, EventArgs e ) {
if ( !IsPostBack ) bindEmpsList ( );
}
void bindEmpsList ( ) {
string query = "SELECT EmployeeId, PhotoPath, LastName + ', ' + FirstName AS FullName, Title FROM Employees";
empsList.DataSource = fetchReader ( query );
empsList.DataBind ( );
}
void getEmpInfo ( object src, DataListCommandEventArgs e ) {
empsList.SelectedIndex = e.Item.ItemIndex;
bindEmpsList ( );
string empID = empsList.DataKeys [ e.Item.ItemIndex ].ToString ( );
string query = "SELECT * FROM Employees WHERE EmployeeId = '" + empID + "'";
empsDetails.DataSource = fetchReader ( query );
empsDetails.DataBind ( );
switch ( e.CommandName ) {
case "personalInfo" :
showPersonalInfo ( );
break;
case "salesInfo" :
showSalesInfo ( );
break;
}
}
void showPersonalInfo ( ) {
Panel personalInfo = ( Panel ) empsDetails.Items [ 0 ].FindControl ( "personalInfo" );
personalInfo.Visible = true;
}
void showSalesInfo ( ) {
string fullname = ( ( HtmlGenericControl ) empsDetails.Items [ 0 ].FindControl ( "fullname" ) ).InnerText;
string query = "SELECT CompanyName, SUM ( SaleAmount ) AS Sales FROM [Orders Summary] WHERE Salesperson = '" +
fullname + "' GROUP BY CompanyName HAVING SUM ( SaleAmount ) > 2000";
DataGrid salesGrid = ( DataGrid ) empsDetails.Items [ 0 ].FindControl ( "salesGrid" );
salesGrid.DataSource = fetchReader ( query );
salesGrid.DataBind ( );
Panel salesInfo = ( Panel ) empsDetails.Items [ 0 ].FindControl ( "salesInfo" );
salesInfo.Visible = true;
}
</script>
<style type="text/css">
<!--
.fullname {
font:bold italic 14pt arial;
color:maroon; margin-bottom:5}
.panel {
width:100%; background-color:beige;
padding:15; border:1px inset}
.notes {
background-color:ghostwhite;
padding:15; border:1px inset}
-->
</style>
</head>
<body>
<div class="header"><h2>Handling Postbacks from Multiple Item Commands</h2></div>
<hr size=1 width=92%>
<center>
<form runat="server">
<table width="90%" align="center">
<tr valign="top">
<td width="50%">
<asp:datalist id="empsList" runat="server"
width=80% cellpadding=5
datakeyfield="employeeid"
onItemCommand="getEmpInfo">
<itemtemplate>
<table cellpadding=5>
<tr>
<td valign="top">
<asp:imagebutton align="top" width=50 border=1 runat="server"
imageurl='<%# Eval ( "photopath",
"~/shared/images/{0}" ) %>' />
</td>
<td valign="top">
<b>Name:</b> <asp:linkbutton runat="server"
text='<%# Eval ( "fullname" ) %>'
style="color:darkred" />
<br>
<%# Eval ( "title" ) %>
</td></tr>
</table>
</itemtemplate>
<selecteditemtemplate>
<table cellpadding=5>
<tr>
<td valign="top">
<asp:imagebutton align="top" width=50 border=1 runat="server"
imageurl='<%# Eval ( "photopath", "~/shared/images/{0}" ) %>' />
</td>
<td valign="top">
<b>Name:</b> <asp:linkbutton runat="server"
text='<%# Eval ( "fullname" ) %>'
style="color:darkred" />
<br>
<%# Eval ( "title" ) %>
<br>
<asp:linkbutton runat="server"
text="Personal Info"
commandname="personalInfo"
style="font-size:9pt" />
|
<asp:linkbutton runat="server"
text="Sales Info"
commandname="salesInfo"
style="font-size:9pt" />
</td></tr>
</table>
</selecteditemtemplate>
<selecteditemstyle backcolor="palegoldenrod" />
</asp:datalist>
</td>
<td width="50%" align="center">
<asp:datalist id="empsDetails" runat="server"
width=98% enableviewstate=false>
<itemtemplate>
<table align="center" cellpadding=5>
<tr>
<td><img align="top" border=1 src='<%# Eval ( "photopath", "/shared/images/{0}" ) %>'
style="border-radius:10px; box-shadow:3px 3px 6px gray" /></td>
<td>
<p id="fullname" class="fullname" runat="server"><%# Eval ( "firstname" ) %> <%# Eval ( "lastname" ) %></p>
<b>Title:</b> <%# Eval ( "title" ) %>
<br>
<b>Hire Date:</b> <%# Eval ( "hiredate", "{0:d}" ) %>
<br>
<b>Extension:</b> <%# Eval ( "extension" ) %>
</td></tr>
</table>
<p><!-- spacer --></p>
<asp:panel id="personalInfo" runat="server" class="panel" visible="false">
<b>Address:</b> <%# Eval ( "address" ) %>,
<%# Eval ( "city" ) %>,
<%# Eval ( "country" ) %>
<br>
<b>Home Phone:</b> <%# Eval ( "homephone" ) %>
<br>
<b>Birth Date:</b> <%# Eval ( "birthdate", "{0:d}" ) %>
<br>
<p class="notes"><%# Eval ( "notes" ) %></p>
</asp:panel>
<asp:panel id="salesInfo" runat="server" class="panel" visible="false">
<div align="center">
<asp:datagrid id="salesGrid" runat="server"
width=90% cellpadding=4 gridlines="horizontal"
font-size="10pt" enableviewstate=false
backcolor="ghostwhite"
autogeneratecolumns=false>
<headerstyle backcolor="steelblue"
forecolor="ivory" font-bold height=25
horizontalalign="center" />
<columns>
<asp:boundcolumn headertext="Company"
datafield="CompanyName" />
<asp:boundcolumn headertext="Sales"
datafield="Sales"
dataformatstring="${0:n}"
itemstyle-horizontalalign="right" />
</columns>
</asp:datagrid>
</div>
</asp:panel>
</itemtemplate>
</asp:datalist>
</td></tr>
</table>
</form>
</center>
<hr size=1 width=92%>
<!-- #include virtual="~/shared/viewsrc.inc" -->
</body>
</html>