C# “雇员姓名”; cboSalesAgent.DataBind(); //cboSalesAgent.DataSource=_order.getEmployee(); //cboSalesAgent.DisplayMember=“EmployeeFirstN
“雇员姓名”; cboSalesAgent.DataBind(); //cboSalesAgent.DataSource=_order.getEmployee(); //cboSalesAgent.DisplayMember=“EmployeeFirstName”; //cboSalesAgent.ValueMember=“employeesid”; //cboSalesAgent.SelectedIndex=-1; } 私有void populateProductCombo() { //cboProducts.DataSource=_order.getProducts(); //cboProducts.DataValueField=“ProductsID”; //cboProducts.DataTextField=“ProdustsName”; //cboProducts.DataBind(); cboProducts.DataSource=_order.getProducts(); cboProducts.DataTextField=“ProdustsName”; cboProducts.DataValueField=“ProductsID”; cboProducts.DataBind(); } 私有void displayGridRecord() { //将值分配给要用于计算的变量 //int grdid=int.Parse(dgvOrderLine.SelectedRow.Cells[5].Text.ToString()); //decimal decPrice=decimal.Parse(dgvOrderLine[“Price”, //dgvOrderLine.Rows[2].Cells.CurrentCell.RowIndex].Value.ToString(); //int intQty=int.Parse(dgvOrderLine[“数量”, //dgvOrderLine.CurrentCell.RowIndex].Value.ToString()); //cboProducts.SelectedValue=long.Parse(dgvOrderLine[“ProductsID”, //dgvOrderLine.CurrentCell.RowIndex].Value.ToString()); //txtPrice.Text=decPrice.ToString(“c2”); //txtQty.Text=intQty.ToString(); //decimal decLineTotal=decPrice*intQty; //txtSubTotal.Text=declineToString.ToString(“c2”); //_order.OrderLineClass.PKID=long.Parse(dgvOrderLine[“SaleOrderLineID”, //dgvOrderLine.CurrentCell.RowIndex].Value.ToString()); } 私有void emptyTopControl() { cboSalesAgent.SelectedIndex=-1; cboRetailer.SelectedIndex=-1; txtRetailerAddress.Text=“”; txtreailerphone.Text=“”; } 私有void emptyControls() { cboProducts.SelectedIndex=-1; txtPrice.Text=“”; txtQty.Text=“”; txtSubTotal.Text=string.Empty; btnisert.Enabled=true; btnUpdate.Enabled=false; dgvOrderLine.DataSource=_order.getOrderLinesTable(); } 私有无效数据() { _order.OrderLineClass.ProductsID=long.Parse(cboProducts.SelectedValue.ToString()); _order.OrderLineClass.Qty=long.Parse(txtQty.Text); _order.OrderLineClass.Price=decimal.Parse(txtPrice.Text.Substring (txtPrice.Text.IndexOf("元")+1);; _order.OrderLineClass.SalesOrderID=\u order.PKID; _order.OrderLineClass.LineTotal=decimal.Parse(txtSubTotal.Text); _order.OrderLineClass.ProdustsName=cboProducts.Text; } 私有数据() { DateTime date=Convert.ToDateTime(dtpSalesOrder.Text); _order.RetailerID=long.Parse(cboRetailer.SelectedValue.ToString()); _order.SalesDate=日期; _order.EmployeeID=long.Parse(cboSalesAgent.SelectedValue.ToString()); _order.RetailerAddress=txtRetailerAddress.Text; _order.RetailerPhone=txtreailerphone.Text; _order.SaleTotal=decimal.Parse(lblTotal.Text.Substring (lblTotal.Text.IndexOf(“$”)+1)); } #端区 受保护的无效cboRetailer\u SelectedIndexChanged(对象发送方,事件参数e) { var dt=_order.getCustomers(); var changed=cboRetailer.SelectedItem; 如果(已更改!=cboRetailer.SelectedItem) { 对于(int i=0;iC# “雇员姓名”; cboSalesAgent.DataBind(); //cboSalesAgent.DataSource=_order.getEmployee(); //cboSalesAgent.DisplayMember=“EmployeeFirstN,c#,asp.net,gridview,C#,Asp.net,Gridview,“雇员姓名”; cboSalesAgent.DataBind(); //cboSalesAgent.DataSource=_order.getEmployee(); //cboSalesAgent.DisplayMember=“EmployeeFirstName”; //cboSalesAgent.ValueMember=“employeesid”; //cboSalesAgent.SelectedIndex=-1; } 私有void populateProductCombo() { //cbo
namespace ChocoMamboAsp
{
public partial class SalesOrderForm : System.Web.UI.UserControl
{
SalesOrder _order = null;
protected void Page_Load(object sender, EventArgs e)
{
if (System.Web.HttpContext.Current.Session["SalesOrderID"] == null)
{
_order = new SalesOrder();
populateCustomerCombo();
populateEmployeeCombo();
populateProductCombo();
dgvOrderLine.DataSource = _order.getOrderLinesTable();
}
else
{
_order = new SalesOrder(long.Parse(System.Web.HttpContext.Current.Session["SalesOrderID"].ToString()));
populateCustomerCombo();
populateEmployeeCombo();
populateProductCombo();
displayRecord();
//string strSQL = "SELECT * FROM " + _strTableName;
//_dst = new DataSet();
//_dbConn.fillDataSet(_dst, strSQL, _strTableName);
//dgvOrderLine.DataSource = _dst.Tables[_strTableName];
//dgvOrderLine.DataBind();
}
}
#region Mutators
/// <summary>
/// Pre-Condtion: Event Call
/// Post-Condition: calculates the item total
/// Description: Calculates the line total for each item in the grid list
/// </summary>
private void calculateLineTotal()
{
//int intQty = 0;
//decimal decPrice = 0.0M;
var total = 0;
foreach (GridViewRow row in dgvOrderLine.Rows)
{
var numberLabel = row.FindControl("LineTotal") as Label;
int number;
if (int.TryParse(numberLabel.Text, out number))
{
total += number;
}
}
txtSubTotal.Text = total.ToString();
try
{
//DataRowView drvCost = (DataRowView)cboProducts.SelectedItem;
//txtPrice.Text = decimal.Parse(drvCost["ProductsCost"].ToString()).ToString("c2");
//intQty = int.Parse(txtQty.Text);
//decPrice = decimal.Parse(txtPrice.Text.Substring(txtPrice.Text.IndexOf('$') + 1));
}
catch (FormatException)
{
//this exception will occur if txtPrice, txtQuantity, and cboProduct is
//empty, and which we can safely ignore.
}
catch (NullReferenceException)
{
//this exception will occur if cboProduct is empty, which we can safely ignore
}
//decimal decLineTotal = decPrice * intQty;
//txtSubTotal.Text = decLineTotal.ToString("c2");
//calculateGrandTotal();
}
private void calculateGrandTotal()
{
try
{
decimal decGrandTotal = decimal.Parse(_order.getOrderLinesTable().Compute
("Sum(LineTotal)", "").ToString());
lblTotal.Text = decGrandTotal.ToString("c2");
}
catch (FormatException)
{
//this exception will occur if tblOrderLine is empty which we can safely ignore
}
}
#endregion
protected void btnInsert_Click(object sender, EventArgs e)
{
assignChildData();
_order.OrderLineClass.addNewRecord();
dgvOrderLine.DataSource = _order.getOrderLinesTable();
dgvOrderLine.DataBind();
calculateGrandTotal();
emptyControls();
}
#region Accessors
private void displayRecord()
{
cboRetailer.SelectedValue = _order.RetailerID.ToString();
dtpSalesOrder.Text = _order.SalesDate.ToString();
cboSalesAgent.SelectedValue = _order.EmployeeID.ToString();
txtRetailerAddress.Text = _order.RetailerAddress;
txtRetailerPhone.Text = _order.RetailerPhone;
lblTotal.Text = _order.SaleTotal.ToString("c2");
dgvOrderLine.DataSource = _order.getOrderLinesTable();
dgvOrderLine.DataBind();
System.Diagnostics.Debug.WriteLine(_order.getOrderLinesTable());
}
private void populateCustomerCombo()
{
if (!IsPostBack)
{
cboRetailer.DataSource = _order.getCustomers();
cboRetailer.DataValueField = "RetailerID";
cboRetailer.DataTextField = "RetailerName";
cboRetailer.DataBind();
}
//cboRetailer.DataSource = _order.getCustomers();
//cboRetailer.DisplayMember = "RetailerName";
//cboRetailer.ValueMember = "RetailerID";
//cboRetailer.SelectedIndex = -1; //will make the combo box select nothing
}
private void populateEmployeeCombo()
{
cboSalesAgent.DataSource = _order.getEmployee();
cboSalesAgent.DataValueField = "EmployesID";
cboSalesAgent.DataTextField = "EmployeeFirstName";
cboSalesAgent.DataBind();
//cboSalesAgent.DataSource = _order.getEmployee();
//cboSalesAgent.DisplayMember = "EmployeeFirstName";
//cboSalesAgent.ValueMember = "EmployesID";
//cboSalesAgent.SelectedIndex = -1;
}
private void populateProductCombo()
{
//cboProducts.DataSource = _order.getProducts();
//cboProducts.DataValueField = "ProductsID";
//cboProducts.DataTextField = "ProdustsName";
//cboProducts.DataBind();
cboProducts.DataSource = _order.getProducts();
cboProducts.DataTextField = "ProdustsName";
cboProducts.DataValueField = "ProductsID";
cboProducts.DataBind();
}
private void displayGridRecord()
{
//assign the values to the variables to be used for calculations
//int grdid = int.Parse(dgvOrderLine.SelectedRow.Cells[5].Text.ToString());
//decimal decPrice = decimal.Parse(dgvOrderLine["Price",
// dgvOrderLine.Rows[2].Cells.CurrentCell.RowIndex].Value.ToString());
//int intQty = int.Parse(dgvOrderLine["Qty",
// dgvOrderLine.CurrentCell.RowIndex].Value.ToString());
//cboProducts.SelectedValue = long.Parse(dgvOrderLine["ProductsID",
// dgvOrderLine.CurrentCell.RowIndex].Value.ToString());
//txtPrice.Text = decPrice.ToString("c2");
//txtQty.Text = intQty.ToString();
//decimal decLineTotal = decPrice * intQty;
//txtSubTotal.Text = decLineTotal.ToString("c2");
//_order.OrderLineClass.PKID = long.Parse(dgvOrderLine["SaleOrderLineID",
// dgvOrderLine.CurrentCell.RowIndex].Value.ToString());
}
private void emptyTopControls()
{
cboSalesAgent.SelectedIndex = -1;
cboRetailer.SelectedIndex = -1;
txtRetailerAddress.Text = "";
txtRetailerPhone.Text = "";
}
private void emptyControls()
{
cboProducts.SelectedIndex = -1;
txtPrice.Text = "";
txtQty.Text = "";
txtSubTotal.Text = string.Empty;
btnInsert.Enabled = true;
btnUpdate.Enabled = false;
dgvOrderLine.DataSource = _order.getOrderLinesTable();
}
private void assignChildData()
{
_order.OrderLineClass.ProductsID = long.Parse(cboProducts.SelectedValue.ToString());
_order.OrderLineClass.Qty = long.Parse(txtQty.Text);
_order.OrderLineClass.Price = decimal.Parse(txtPrice.Text.Substring
(txtPrice.Text.IndexOf('$') + 1));
_order.OrderLineClass.SalesOrderID = _order.PKID;
_order.OrderLineClass.LineTotal = decimal.Parse(txtSubTotal.Text);
_order.OrderLineClass.ProdustsName = cboProducts.Text;
}
private void assignData()
{
DateTime date = Convert.ToDateTime(dtpSalesOrder.Text);
_order.RetailerID = long.Parse(cboRetailer.SelectedValue.ToString());
_order.SalesDate = date;
_order.EmployeeID = long.Parse(cboSalesAgent.SelectedValue.ToString());
_order.RetailerAddress = txtRetailerAddress.Text;
_order.RetailerPhone = txtRetailerPhone.Text;
_order.SaleTotal = decimal.Parse(lblTotal.Text.Substring
(lblTotal.Text.IndexOf('$') + 1));
}
#endregion
protected void cboRetailer_SelectedIndexChanged(object sender, EventArgs e)
{
var dt = _order.getCustomers();
var changed = cboRetailer.SelectedItem;
if (changed != cboRetailer.SelectedItem)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["RetailerID"].ToString() == cboRetailer.SelectedValue)
{
txtRetailerAddress.Text = dt.Rows[i]["RetailerAddress"].ToString();
txtRetailerPhone.Text = dt.Rows[i]["RetailerPhone"].ToString();
}
}
}
}
protected void cboRetailer_TextChanged(object sender, EventArgs e)
{
var dt = _order.getCustomers();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["RetailerID"].ToString() == cboRetailer.SelectedValue)
{
Response.Write("<script>alert('test')</script>");
txtRetailerAddress.Text = dt.Rows[i]["RetailerAddress"].ToString();
txtRetailerPhone.Text = dt.Rows[i]["RetailerPhone"].ToString();
}
}
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
Calendar1.Visible = true;
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
dtpSalesOrder.Text = Calendar1.SelectedDate.ToShortDateString();
Calendar1.Visible = false;
}
protected void cboProducts_SelectedIndexChanged(object sender, EventArgs e)
{
var dt = _order.getProducts();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["ProductsID"].ToString() == cboProducts.SelectedValue)
{
txtPrice.Text = dt.Rows[i]["ProductsCost"].ToString();
}
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
assignData();
_order.saveData();
_order.OrderLineClass.saveData();
Response.Redirect("SalesOrderGird.aspx");
}
}
}
Sales Order Class
namespace ChocoMamboAsp
{
class SalesOrder
{
#region Instance Variables
//list of variables
/// <summary>
/// The variables are to set up both the Connection and the table names
/// in order to get the correct information from the data base
/// The Dataset is to store all the infromation from the database table
/// The dbConnection is the database name we use to connect to the database.
/// </summary>
long _lngPKID = 0;
string _strTableName = "SalesOrder";
dbConnection _dbConn = new dbConnection("|DataDirectory|ChocoMambo.accdb");
DataSet _dst = new DataSet();
DataRow _drwRecord = null;
// create an instance of the OrderLine class so we can create the relationship between the tables tblOrders and tblOrderLines
SalesOrderLine _orderLine = null;
#endregion
#region Constructors
/// <summary>
/// Constructor for new Order
/// </summary>
public SalesOrder()
{
loadDataSet();
addNewRecord();
_orderLine = new SalesOrderLine(_dst, _lngPKID);
createRelationship();
}
/// <summary>
/// Constructor for existing Order
/// </summary>
/// <param name="pLongID">The record ID of the order that will be used in this class</param>
public SalesOrder(long pLongID)
{
_lngPKID = pLongID;
loadDataSet();
_orderLine = new SalesOrderLine(_dst, _lngPKID);
createRelationship();
assignFields();
}
#endregion
#region Properties
public long EmployeeID { get; set; }
public DateTime SalesDate { get; set; }
public string RetailerAddress { get; set; }
public long RetailerID { get; set; } //this is the retailer anything with CustomerNumber is now Retailer
public decimal SaleTotal { get; set; }
public string RetailerPhone { get; set; }
public long PKID
{
get { return _lngPKID; }
}
>
public SalesOrderLine OrderLineClass
{
get
{
return _orderLine;
}
}
#endregion
#region Accessors
private void loadDataSet()
{
string strSQL = "SELECT * FROM " + _strTableName;
if (_lngPKID > 0)
strSQL += " WHERE SalesOrderID = " + _lngPKID;
_dbConn.fillDataSet(_dst, strSQL, _strTableName);
}
private void createRelationship()
{
if (_dst.Relations.Contains("orderRelationship") == false)
{
_dst.Relations.Add("orderRelationship", _dst.Tables["SalesOrder"].Columns["SalesOrderID"],
_dst.Tables["SalesOrderLine"].Columns["SalesOrderID"]);
}
}
private void assignFields()
{
EmployeeID = long.Parse(_dst.Tables[_strTableName].Rows[0]["EmployesID"].ToString());
SalesDate = DateTime.Parse(_dst.Tables[_strTableName].Rows[0]["SalesDate"].ToString());
RetailerAddress = _dst.Tables[_strTableName].Rows[0]["RetailerAddress"].ToString();
RetailerID = long.Parse(_dst.Tables[_strTableName].Rows[0]["RetailerID"].ToString());
SaleTotal = decimal.Parse(_dst.Tables[_strTableName].Rows[0]["SaleTotal"].ToString());
RetailerPhone = _dst.Tables[_strTableName].Rows[0]["RetailerPhone"].ToString();
}
public DataTable getCustomers()
{
return _dbConn.GetDataTable("Retailer");
}
public DataTable getEmployee()
{
return _dbConn.GetDataTable("Employes");
}
public DataTable getProducts()
{
return _dbConn.GetDataTable("Products");
}
public DataTable getOrderLinesTable()
{
return _dst.Tables["SalesOrderLine"];
}
#endregion
#region Mutators
public void saveData()
{
if (_lngPKID <= 0)
addNewRecord();
else
updateRecord();
_dbConn.SaveData(_dst, _strTableName);
}
private void addNewRecord()
{
_drwRecord = _dst.Tables[_strTableName].NewRow();
_drwRecord.BeginEdit();
_drwRecord["SalesDate"] = SalesDate;
_drwRecord["RetailerAddress"] = RetailerAddress;
_drwRecord["RetailerPhone"] = RetailerPhone;
_drwRecord["RetailerID"] = RetailerID;
_drwRecord["SaleTotal"] = SaleTotal;
_drwRecord["EmployesID"] = EmployeeID;
_drwRecord.EndEdit();
_dst.Tables[_strTableName].Rows.Add(_drwRecord);
_lngPKID = long.Parse(_drwRecord["SalesOrderID"].ToString());
}
private void updateRecord()
{
_drwRecord = _dst.Tables[_strTableName].Rows.Find(_lngPKID);
_drwRecord.BeginEdit();
_drwRecord["SalesDate"] = SalesDate;
_drwRecord["RetailerAddress"] = RetailerAddress;
_drwRecord["RetailerPhone"] = RetailerPhone;
_drwRecord["RetailerID"] = RetailerID;
_drwRecord["SaleTotal"] = SaleTotal;
_drwRecord["EmployesID"] = EmployeeID;
_drwRecord.EndEdit();
}
#endregion
}
}
SalesOrdeLine Class
namespace ChocoMamboAsp
{
class SalesOrderLine
{
#region Instance Variables
long _lngFKID = 0, _lngPKID = 0;
string _strTableName = "SalesOrderLine";
dbConnection _dbConn = new dbConnection("|DataDirectory|ChocoMambo.accdb");
DataSet _dst;
DataRow _drwRecord = null;
#endregion
#region Constructors
public SalesOrderLine(DataSet pDataSet, long pLongID)
{
_dst = pDataSet;
_lngFKID = pLongID;
loadDataSet();
assignFields();
}
#endregion
#region Properties
public long ProductsID { get; set; }
public decimal Price{ get; set; }
public long Qty { get; set; }
public long SalesOrderID { get; set; }
public decimal LineTotal { get; set; }
public string ProdustsName { get; set; }
public long PKID
{
get { return _lngPKID; }
set { _lngPKID = value; }
}
#endregion
public DataTable getOrderLinesTable()
{
return _dst.Tables["SalesOrderLine"];
}
#region Accessors
public void loadDataSet()
{
string strSQL = "SELECT * FROM qrySalesOrderLine";//maybe here
strSQL += " WHERE SalesOrderID = " + _lngFKID; //here
_dbConn.fillDataSet(_dst, strSQL, _strTableName);
}
private void assignFields()
{
try
{
ProductsID = long.Parse(_dst.Tables[_strTableName].Rows[0]["ProductsID"].ToString());
Price = decimal.Parse(_dst.Tables[_strTableName].Rows[0]["Price"].ToString());
Qty = long.Parse(_dst.Tables[_strTableName].Rows[0]["Qty"].ToString());
SalesOrderID = long.Parse(_dst.Tables[_strTableName].Rows[0]["SalesOrderID"].ToString());
LineTotal = decimal.Parse(_dst.Tables[_strTableName].Rows[0]["LineTotal"].ToString());
ProdustsName = _dst.Tables[_strTableName].Rows[0]["ProdustsName"].ToString();
}
catch (IndexOutOfRangeException)
{
//this exception occurs when order line row is empty which we can safely ignore.
}
}
#endregion
#region Mutators
public void saveData()
{
_dbConn.SaveData(_dst, _strTableName);
}
public void addNewRecord()
{
_drwRecord = _dst.Tables[_strTableName].NewRow();
_drwRecord.BeginEdit();
_drwRecord["ProductsID"] = ProductsID;
_drwRecord["Price"] = Price;
_drwRecord["Qty"] = Qty;
_drwRecord["SalesOrderID"] = SalesOrderID;
_drwRecord["LineTotal"] = LineTotal;
_drwRecord["ProdustsName"] = ProdustsName;
_drwRecord.EndEdit();
_dst.Tables[_strTableName].Rows.Add(_drwRecord);
_lngPKID = long.Parse(_drwRecord["SaleOrderLineID"].ToString());
}
public void updateRecord()
{
try
{
_drwRecord = _dst.Tables[_strTableName].Rows.Find(_lngPKID);
_drwRecord.BeginEdit();
_drwRecord["ProductsID"] = ProductsID;
_drwRecord["Price"] = Price;
_drwRecord["Qty"] = Qty;
_drwRecord["SalesOrderID"] = SalesOrderID;
_drwRecord["LineTotal"] = LineTotal;
_drwRecord["ProdustsName"] = ProdustsName;
_drwRecord.EndEdit();
}
catch (System.NullReferenceException)
{ }
}
public void deleteOrderLine(long pLongPKID)
{
_dst.Tables[_strTableName].Rows.Find(pLongPKID).Delete();
}
#endregion
}
}