.Net資源 - 建立可加總的Datagrid
作者: Ahan 日期: 2005-08-27 01:15
Summary Rows in DataGrid Controls
Summary.cs
// Summary.cs - code-behind file
namespace BWSLib
{
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
public class MyPage : Page
{
// Declare as PUBLIC or PROTECTED members all
// the controls in the layout
protected DataGrid grid;
protected Label lblMsg;
protected DropDownList ddYears;
// Page OnLoad
protected override void OnLoad(EventArgs e)
{
if (!IsPostBack)
{
// Load data and refresh the view
DataFromSourceToMemory("MyDataSet");
UpdateDataView();
}
}
// DataFromSourceToMemory
private void DataFromSourceToMemory(String strDataSessionName)
{
// Gets rows from the data source
DataSet oDS = PhysicalDataRead();
// Stores it in the session cache
Session[strDataSessionName] = oDS;
}
// PhysicalDataRead
private DataSet PhysicalDataRead()
{
String strCnn = "server=localhost;initial catalog=northwind;uid=sa;";
SqlConnection conn = new SqlConnection(strCnn);
// Command text using WITH ROLLUP
StringBuilder sb = new StringBuilder("");
sb.Append("SELECT ");
sb.Append(" CASE GROUPING(o.customerid) WHEN 0 THEN o.customerid ELSE '(Total)' END AS MyCustomerID, ");
sb.Append(" CASE GROUPING(od.orderid) WHEN 0 THEN od.orderid ELSE -1 END AS MyOrderID, ");
sb.Append(" SUM(od.quantity*od.unitprice) AS price ");
sb.Append("FROM Orders o, [Order Details] od ");
sb.Append("WHERE Year(orderdate) = @TheYear AND od.orderid=o.orderid ");
sb.Append("GROUP BY o.customerid, od.orderid WITH ROLLUP ");
sb.Append("ORDER BY o.customerid, price");
String strCmd = sb.ToString();
sb = null;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strCmd;
cmd.Connection = conn;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
// Set the "year" parameter
SqlParameter p1 = new SqlParameter("@TheYear", SqlDbType.Int);
p1.Direction = ParameterDirection.Input;
p1.Value = Convert.ToInt32(ddYears.SelectedItem.Text);
cmd.Parameters.Add(p1);
// The DataSet contains two tables: Orders and Orders1.
// The latter is renamed to "OrdersSummary" and the two will be put into
// relation on the CustomerID field.
DataSet ds = new DataSet();
da.Fill(ds, "Orders");
return ds;
}
// Refresh the UI
private void UpdateDataView()
{
// Retrieves the data
DataSet ds = (DataSet) Session["MyDataSet"];
DataView dv = ds.Tables["Orders"].DefaultView;
// Re-bind data
grid.DataSource = dv;
grid.DataBind();
}
// EVENT HANDLER: ItemCreated
public void ItemCreated(Object sender, DataGridItemEventArgs e)
{
// Get the newly created item
ListItemType itemType = e.Item.ItemType;
///////////////////////////////////////////////////////////////////
// ITEM and ALTERNATINGITEM
if (itemType == ListItemType.Item || itemType == ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView) e.Item.DataItem;
if (drv != null)
{
// Check here the app-specific way to detect whether the
// current row is a summary row
if ((int) drv["MyOrderID"] == -1)
{
// Modify the row layout as needed. In this case,
// + change the background color to white
// + Group the first two cells and display company name and #orders
// + Display the total of orders
// Graphical manipulations can be done here. Manipulations that require
// data access should be done hooking ItemDataBound. They can be done
// in ItemCreated only for templated columns.
e.Item.BackColor = Color.White;
e.Item.Font.Bold = true;
e.Item.Cells.RemoveAt(1); // remove the order # cell
e.Item.Cells[0].ColumnSpan = 2; // span the custID cell
e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;
}
}
}
}
// EVENT HANDLER: PageIndexChanged
public void PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
{
grid.CurrentPageIndex = e.NewPageIndex;
UpdateDataView();
}
// EVENT HANDLER: ItemDataBound
public void ItemDataBound(Object sender, DataGridItemEventArgs e)
{
// Retrieve the data linked through the relation
// Given the structure of the data ONLY ONE row is retrieved
DataRowView drv = (DataRowView) e.Item.DataItem;
if (drv == null)
return;
// Check here the app-specific way to detect whether the
// current row is a summary row
if ((int) drv["MyOrderID"] == -1)
{
if (drv["MyCustomerID"].ToString() == "(Total)")
{
e.Item.BackColor = Color.Yellow;
e.Item.Cells[0].Text = "Orders total";
}
else
e.Item.Cells[0].Text = "Customer subtotal";
}
}
public void OnLoadYear(Object sender, EventArgs e)
{
DataFromSourceToMemory("MyDataSet");
UpdateDataView();
}
}
}
namespace BWSLib
{
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
public class MyPage : Page
{
// Declare as PUBLIC or PROTECTED members all
// the controls in the layout
protected DataGrid grid;
protected Label lblMsg;
protected DropDownList ddYears;
// Page OnLoad
protected override void OnLoad(EventArgs e)
{
if (!IsPostBack)
{
// Load data and refresh the view
DataFromSourceToMemory("MyDataSet");
UpdateDataView();
}
}
// DataFromSourceToMemory
private void DataFromSourceToMemory(String strDataSessionName)
{
// Gets rows from the data source
DataSet oDS = PhysicalDataRead();
// Stores it in the session cache
Session[strDataSessionName] = oDS;
}
// PhysicalDataRead
private DataSet PhysicalDataRead()
{
String strCnn = "server=localhost;initial catalog=northwind;uid=sa;";
SqlConnection conn = new SqlConnection(strCnn);
// Command text using WITH ROLLUP
StringBuilder sb = new StringBuilder("");
sb.Append("SELECT ");
sb.Append(" CASE GROUPING(o.customerid) WHEN 0 THEN o.customerid ELSE '(Total)' END AS MyCustomerID, ");
sb.Append(" CASE GROUPING(od.orderid) WHEN 0 THEN od.orderid ELSE -1 END AS MyOrderID, ");
sb.Append(" SUM(od.quantity*od.unitprice) AS price ");
sb.Append("FROM Orders o, [Order Details] od ");
sb.Append("WHERE Year(orderdate) = @TheYear AND od.orderid=o.orderid ");
sb.Append("GROUP BY o.customerid, od.orderid WITH ROLLUP ");
sb.Append("ORDER BY o.customerid, price");
String strCmd = sb.ToString();
sb = null;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strCmd;
cmd.Connection = conn;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
// Set the "year" parameter
SqlParameter p1 = new SqlParameter("@TheYear", SqlDbType.Int);
p1.Direction = ParameterDirection.Input;
p1.Value = Convert.ToInt32(ddYears.SelectedItem.Text);
cmd.Parameters.Add(p1);
// The DataSet contains two tables: Orders and Orders1.
// The latter is renamed to "OrdersSummary" and the two will be put into
// relation on the CustomerID field.
DataSet ds = new DataSet();
da.Fill(ds, "Orders");
return ds;
}
// Refresh the UI
private void UpdateDataView()
{
// Retrieves the data
DataSet ds = (DataSet) Session["MyDataSet"];
DataView dv = ds.Tables["Orders"].DefaultView;
// Re-bind data
grid.DataSource = dv;
grid.DataBind();
}
// EVENT HANDLER: ItemCreated
public void ItemCreated(Object sender, DataGridItemEventArgs e)
{
// Get the newly created item
ListItemType itemType = e.Item.ItemType;
///////////////////////////////////////////////////////////////////
// ITEM and ALTERNATINGITEM
if (itemType == ListItemType.Item || itemType == ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView) e.Item.DataItem;
if (drv != null)
{
// Check here the app-specific way to detect whether the
// current row is a summary row
if ((int) drv["MyOrderID"] == -1)
{
// Modify the row layout as needed. In this case,
// + change the background color to white
// + Group the first two cells and display company name and #orders
// + Display the total of orders
// Graphical manipulations can be done here. Manipulations that require
// data access should be done hooking ItemDataBound. They can be done
// in ItemCreated only for templated columns.
e.Item.BackColor = Color.White;
e.Item.Font.Bold = true;
e.Item.Cells.RemoveAt(1); // remove the order # cell
e.Item.Cells[0].ColumnSpan = 2; // span the custID cell
e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;
}
}
}
}
// EVENT HANDLER: PageIndexChanged
public void PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
{
grid.CurrentPageIndex = e.NewPageIndex;
UpdateDataView();
}
// EVENT HANDLER: ItemDataBound
public void ItemDataBound(Object sender, DataGridItemEventArgs e)
{
// Retrieve the data linked through the relation
// Given the structure of the data ONLY ONE row is retrieved
DataRowView drv = (DataRowView) e.Item.DataItem;
if (drv == null)
return;
// Check here the app-specific way to detect whether the
// current row is a summary row
if ((int) drv["MyOrderID"] == -1)
{
if (drv["MyCustomerID"].ToString() == "(Total)")
{
e.Item.BackColor = Color.Yellow;
e.Item.Cells[0].Text = "Orders total";
}
else
e.Item.Cells[0].Text = "Customer subtotal";
}
}
public void OnLoadYear(Object sender, EventArgs e)
{
DataFromSourceToMemory("MyDataSet");
UpdateDataView();
}
}
}
Summary.cs
‹%@ Page Language="C#" Inherits="BWSLib.MyPage" Src="Summary.cs" Trace="false" %›
‹html›
‹title›Summary Rows‹/title›
‹style›
a {behavior:url(....mouseover.htc);}
hr {height:2px;color:black;}
.StdTextBox {font-family:verdana;font-size:x-small;border:solid 1px black;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true');}
.StdText {font-family:verdana;font-size:x-small;}
‹/style›
‹BODY bgcolor="ivory" style="font-family:verdana;font-size:small"›
‹h2›Orders and Customers‹/h2›
‹!-- ASP.NET Form --›
‹form runat="server"›
‹!-- Grid and the remainder of the page --›
‹table›‹tr›
‹td valign="top"›
‹asp:DataGrid id="grid" runat="server"
AutoGenerateColumns="false"
AllowPaging="true" PageSize="15"
Font-Size = "xx-small"
CellSpacing="0" CellPadding="4"
DataKeyField="MyCustomerId"
BorderStyle="solid" BorderColor="skyblue" BorderWidth="1" GridLines="both"
OnItemCreated="ItemCreated"
OnItemDataBound="ItemDataBound"
OnPageIndexChanged="PageIndexChanged"›
‹headerstyle backcolor="skyblue" font-size="9pt" font-bold="true" /›
‹itemstyle backcolor="#eeeeee" /›
‹pagerstyle backcolor="skyblue" font-name="webdings" font-size="10pt" PrevPageText="3" NextPageText="4" /›
‹Columns›
‹asp:BoundColumn DataField="MyCustomerId" HeaderText="Customer" /›
‹asp:BoundColumn DataField="MyOrderId" HeaderText="Order #" /›
‹asp:BoundColumn DataField="price" HeaderText="Amount" DataFormatString="{0:c}"›
‹itemstyle horizontalalign="right" /›
‹/asp:BoundColumn›
‹/Columns›
‹/asp:DataGrid›
‹/td›
‹td valign="top" width="20px"›‹/td›
‹td valign="top"›
‹b›Year‹/b›
‹asp:dropdownlist runat="server" id="ddYears"›
‹asp:listitem runat="server" ›1998‹/asp:listitem›
‹asp:listitem runat="server" ›1997‹/asp:listitem›
‹asp:listitem runat="server" ›1996‹/asp:listitem›
‹/asp:dropdownlist>
‹asp:linkbutton runat="server" text="Load..." onclick="OnLoadYear" />
‹br>‹br>
‹asp:label runat="server" cssclass="StdText" id="lblMsg" />
‹/td>
‹/tr>‹/table>
‹hr>
‹/form>
‹/body>
‹/html›
‹html›
‹title›Summary Rows‹/title›
‹style›
a {behavior:url(....mouseover.htc);}
hr {height:2px;color:black;}
.StdTextBox {font-family:verdana;font-size:x-small;border:solid 1px black;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true');}
.StdText {font-family:verdana;font-size:x-small;}
‹/style›
‹BODY bgcolor="ivory" style="font-family:verdana;font-size:small"›
‹h2›Orders and Customers‹/h2›
‹!-- ASP.NET Form --›
‹form runat="server"›
‹!-- Grid and the remainder of the page --›
‹table›‹tr›
‹td valign="top"›
‹asp:DataGrid id="grid" runat="server"
AutoGenerateColumns="false"
AllowPaging="true" PageSize="15"
Font-Size = "xx-small"
CellSpacing="0" CellPadding="4"
DataKeyField="MyCustomerId"
BorderStyle="solid" BorderColor="skyblue" BorderWidth="1" GridLines="both"
OnItemCreated="ItemCreated"
OnItemDataBound="ItemDataBound"
OnPageIndexChanged="PageIndexChanged"›
‹headerstyle backcolor="skyblue" font-size="9pt" font-bold="true" /›
‹itemstyle backcolor="#eeeeee" /›
‹pagerstyle backcolor="skyblue" font-name="webdings" font-size="10pt" PrevPageText="3" NextPageText="4" /›
‹Columns›
‹asp:BoundColumn DataField="MyCustomerId" HeaderText="Customer" /›
‹asp:BoundColumn DataField="MyOrderId" HeaderText="Order #" /›
‹asp:BoundColumn DataField="price" HeaderText="Amount" DataFormatString="{0:c}"›
‹itemstyle horizontalalign="right" /›
‹/asp:BoundColumn›
‹/Columns›
‹/asp:DataGrid›
‹/td›
‹td valign="top" width="20px"›‹/td›
‹td valign="top"›
‹b›Year‹/b›
‹asp:dropdownlist runat="server" id="ddYears"›
‹asp:listitem runat="server" ›1998‹/asp:listitem›
‹asp:listitem runat="server" ›1997‹/asp:listitem›
‹asp:listitem runat="server" ›1996‹/asp:listitem›
‹/asp:dropdownlist>
‹asp:linkbutton runat="server" text="Load..." onclick="OnLoadYear" />
‹br>‹br>
‹asp:label runat="server" cssclass="StdText" id="lblMsg" />
‹/td>
‹/tr>‹/table>
‹hr>
‹/form>
‹/body>
‹/html›
mbt women's shoes can be a legend sheep leatherette boots model. cheap ugg boots Appears like a cartoon to match wits in appearance but ouyada, now inside earth is usually a prevailing wind.
i like women's ugg boots and mbt schuhe. The best ugg boots sale in Montauk Point (New York)—Captain John Rade was polo ralph lauren for using a ROD to catch bigger fishes more than 10 fishermen at the same time.
Wholesale fashion watches designs and distributes Designer watches, Bvlgari Watches, Rolex Watches, and home furnishings as well, but their Cartier Handbags remain among their most well-known and sought-after Gucci Handbags. If you are looking for a reason to choose a Replica Handbags, you need look no further than the many celebrities who have chosen products designed by the teams of the Fendi Handbags.
Wholesale men's and women's high imitation watches|replica Watches|
Boutique sale of sunglasses|Replica Sunglasses|
The brand scarves on sale|Replica Scarf|aqian100427
Boutique sale of sunglasses|Replica Sunglasses|
The brand scarves on sale|Replica Scarf|aqian100427
You need an authentication code/CD-Key for each account, and you get those buy buying the base game and expansions. So... yes, you need two copies of everything if you wow gold kaufen want two accounts. If you don't wow gold want the actual boxes laying around your house, remember that you can get the original game and the expansions on the Blizzard Store digitally. If you have a Battle.net account, you can attach both accounts to one login and have all of your game information stored on Battle.net. It's wow or actually a pretty convenient service for wow po multiboxers!
發表評論
訂閱
上一篇
返回
下一篇
