Jag förstår vad du menar, var tvungen att lösa det i ett tidigare projekt. Jag postar lösningen direkt konverterad till C# men jag är inte säker på att det är bästa sättet. Vill bara visa hur man kan göra för att återanvända ett datatable på hela sidan.
public DataView myOrderDetailsView;
public DataTable OrderRows {
get {
DataTable tmpOrderRows;
int i;
DataRow dr;
if (Session("MyOrderRows") == null) {
tmpOrderRows = new DataTable();
// first load -- prepopulate with some data
// if this is a new order then populate with blank records
if ((Request.QueryString("Orderid") == "NewOrder") | (NewOrderRequested) | (Request.QueryString("Orderid") == "")) {
tmpOrderRows.Columns.Add(new DataColumn("Qty", typeof(string)));
tmpOrderRows.Columns.Add(new DataColumn("Description", typeof(string)));
tmpOrderRows.Columns.Add(new DataColumn("GLCodeID", typeof(string)));
tmpOrderRows.Columns.Add(new DataColumn("UnitPrice", typeof(double)));
tmpOrderRows.Columns.Add(new DataColumn("Taxid", typeof(string)));
tmpOrderRows.Columns.Add(new DataColumn("TotalPrice", typeof(double)));
tmpOrderRows.Columns.Add(new DataColumn("OrderID", typeof(string)));
tmpOrderRows.Columns.Add(new DataColumn("OrderDetailID", typeof(string)));
// Add 5 blank lines
for (i = 1; i <= 5; i++) {
dr = tmpOrderRows.NewRow();
tmpOrderRows.Rows.Add(dr);
}
}
else {
// this is an existing order
tmpOrderRows = myUtils.dbDataView("SELECT OrderDetailID, OrderID, Qty, Description, GLCodeID, Price As UnitPrice, (Price * Qty) AS TotalPrice, Taxid FROM tblOrderDetails where ORderid=" + Request.QueryString("orderid")).Table;
dr = tmpOrderRows.NewRow();
tmpOrderRows.Rows.Add(dr);
dr = tmpOrderRows.NewRow();
tmpOrderRows.Rows.Add(dr);
}
// Save either table to the Session Variable
Session("MyOrderRows") = tmpOrderRows;
return tmpOrderRows;
}
else {
return Session("MyOrderRows");
}
}
}
