rlcrews
asked on
How to delete a row from a dataTable and adjust a cost
Hello,
I am working on a basic shopping cart that will allow users to register for an event. I have built the cart using a dataTable and I have been able to add the users as well as calculate a running total. I am having difficulty though figuring out how to delete a row from the shopping cart. If a user decides they want to remove an attendee I want them to be able to click on a remove link in my datagrid and remove the user. This function should remove the row as well as adjust the total cost.
I have built a similar page in vb.net but I am having trouble translating the code over to C#.net When I try to call the dataTable from another function I get an error that the dataTable name does not exist in the current context.
Can you please help me understand what I am missing and how to correct this so that I am able to remove items from my shopping cart.
Thanks in advance,
I am working on a basic shopping cart that will allow users to register for an event. I have built the cart using a dataTable and I have been able to add the users as well as calculate a running total. I am having difficulty though figuring out how to delete a row from the shopping cart. If a user decides they want to remove an attendee I want them to be able to click on a remove link in my datagrid and remove the user. This function should remove the row as well as adjust the total cost.
I have built a similar page in vb.net but I am having trouble translating the code over to C#.net When I try to call the dataTable from another function I get an error that the dataTable name does not exist in the current context.
Can you please help me understand what I am missing and how to correct this so that I am able to remove items from my shopping cart.
Thanks in advance,
//create shopping cart
private void DataTable()
{
DataTable MyDT = new DataTable();
DataRow MyRow;
if (ViewState["DataTable"] == null)
{
MyDT.Columns.Add("regID", System.Type.GetType("System.Int32"));
MyDT.Columns.Add("Fname");
MyDT.Columns.Add("Lname");
MyDT.Columns.Add("Title");
MyDT.Columns.Add("Agency");
MyDT.Columns.Add("Email");
MyDT.Columns.Add("Shirt");
MyDT.Columns.Add("FstAtt");
MyDT.Columns.Add("Price", typeof(Decimal));
MyRow = MyDT.NewRow();
MyRow[0] = MyDT.Rows.Count + 1;
MyRow[1] = TxtFName.Text;
MyRow[2] = TxtLName.Text;
MyRow[3] = TxtTitle.Text;
MyRow[4] = TxtAgency.Text;
MyRow[5] = TxtEmail.Text;
MyRow[6] = ddShirt.SelectedItem.Text;
MyRow[7] = ddAttend.SelectedItem.Text;
MyRow[8] = 100; //current rate for User Conference registration
MyDT.Rows.Add(MyRow);
//clear fields
TxtFName.Text = "";
TxtLName.Text = "";
TxtTitle.Text = "";
TxtAgency.Text = "";
TxtEmail.Text = "";
ddShirt.SelectedIndex = -1;
ddAttend.SelectedIndex = -1;
//Calculate Total for Shopping Cart
Decimal Total = 0.00M;
foreach (DataRow Row in MyDT.Rows)
{
Total += (Decimal)Row["Price"];
}
runTotalLBL.Text = Total.ToString();
}
else
{
MyDT = (DataTable)ViewState["DataTable"];
MyRow = MyDT.NewRow();
MyRow[0] = MyDT.Rows.Count + 1;
MyRow[1] = TxtFName.Text;
MyRow[2] = TxtLName.Text;
MyRow[3] = TxtTitle.Text;
MyRow[4] = TxtAgency.Text;
MyRow[5] = TxtEmail.Text;
MyRow[6] = ddShirt.SelectedItem.Text;
MyRow[7] = ddAttend.SelectedItem.Text;
MyRow[8] = 100;
MyDT.Rows.Add(MyRow);
//clear fields after each registrant is entered
TxtFName.Text = "";
TxtLName.Text = "";
TxtTitle.Text = "";
TxtAgency.Text = "";
TxtEmail.Text = "";
ddShirt.SelectedIndex = -1;
ddAttend.SelectedIndex = -1;
//Calculate Total for Shopping Cart
Decimal Total = 0.0M;
foreach (DataRow Row in MyDT.Rows)
{
Total += (Decimal)Row["Price"];
}
runTotalLBL.Text = Total.ToString();
}
ViewState["DataTable"] = MyDT;
//bind datatable to datagrid
dg.DataSource = MyDT;
dg.DataBind();
}
//add attendees to roster datagrid
protected void AddToCart(object sender, EventArgs e)
{
DataTable();
}
//remove attendee from data grid
protected void Delete_Item(object source, DataGridCommandEventArgs e)
{
//Here is where I get stuck. In vb.net the datatable was recognized across functions however here it only seems to be accessible within the function "DataTable"
ViewState["DataTable"] = MyDT;
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.