C# “雇员姓名”; cboSalesAgent.DataBind(); //cboSalesAgent.DataSource=_order.getEmployee(); //cboSalesAgent.DisplayMember=“EmployeeFirstN

C# “雇员姓名”; 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

“雇员姓名”; 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;inamespace 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 } }