How to add Row to datagrid OnItemDataBoundEventHandler

How do I add a row and then columns to a datagrid?  Let me know if you need more info.  Also, if you can show me how to NOT display the ID column, please do because I have to do a second access without the ID, which is slow.
Here is the existing code:

// access data with ID column
recordX = dbAccess.getDataTable(con, table, sql);
// add second access to data without ID column for binding
DataTable data = dbAccess.getDataTable(con, table, sqlSv);
dg.DataSource = data;
dg.DataBind();


protected void OnItemDataBoundEventHandler(Object sender, DataGridItemEventArgs e)
{
      ListItemType type = e.Item.ItemType;
      int priceSBT = 0;
      string svDate = "";

      if (type == ListItemType.Header ||
          type == ListItemType.Footer ||
          type == ListItemType.Separator) return;
          try
         {  
              DataRow dr = ((DataRowView)e.Item.DataItem).Row;
              int iCtr = e.Item.Controls.Count;
              int xCtr = 0;
              string table = Session["tablename"].ToString();
              xCtr = iCtr-1;
 
// for row (or y) - must take into account which page it is (dg.CurrentPageIndex) * no. of rows on page (15)
                int y = dg.Items.Count+(dg.CurrentPageIndex*15);
                        
// Add Subtotals on Date Change
                if (recordX.Rows[y]["Order Dt"].ToString() == svDate.ToString())
                {
                  string sContent = recordX.Rows[y]["Price"].ToString();
                  int iContent = Convert.ToInt32(sContent);
                  priceSBT += iContent;
                 }
                 else
                 {
     //**************** add row then add column with subtotal priceSBT HERE

                                       svDate = recordX.Rows[y]["Order Dt"].ToString();
                            }
                     }
 }
dcassAsked:
Who is Participating?
 
w_shailaConnect With a Mentor Commented:
1) Caleculate subtotal with the columns in datatable by looping datatable rows
2) Create a Row and assign subtotal to this row
3) bind this datatable to dataGrid()

Regarding  ID column, you can add the colums what ever you want to the datagrid manually. But that ID column should be there in the datasource.you can manage with DataKeyField  without showing in grid as a clomn.

0
 
tomasX2Commented:
What is it exactly that your trying to do?
0
 
dcassAuthor Commented:
Add a row with a column for the subtotal of several lines on a date break.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
dcassAuthor Commented:
Can you show me the code it would take to do these two things?
I am new and don't know how.
0
 
dcassAuthor Commented:
Unfortunately my boss expects this in the morning to show his boss -
Can anyone help me on this?
I've tried:

recordX = dbAccess.getDataTable(con, table, sql);
DataTable data = dbAccess.getDataTable(con, table, sqlSv);

string svDt = "";
string cssClass = "";
string tdclass = "";
foreach(DataRow row in data.Rows)
{
   string Price=row["Price"].ToString();
   string ordDt=row["Order Dt"].ToString();
    if(ordDt!=svDt)
    {
                svDt = ordDt;
                DataColumn col = new DataColumn();
      DataRow rowx;
      col.DataType = System.Type.GetType("System.String");
      col.ColumnName = "PriceSBT";
      data.Columns.Add(col);
      rowx = data.NewRow();
      rowx["PriceSBT"] = Price;
      data.Rows.Add(rowx);
      }
}

But I get an error:
Collection was modified; enumeration operation may not execute.

Any other way to do this?



                  dg.DataSource = data;
0
 
dcassAuthor Commented:
Never mind - I finally got it - sort of.
I gathered you can't add rows for subtotals because it adds them to the bottom of the table instead of where you need it - on the date breaks, so I added a column instead that I populated on date change.
If there is a way to add rows in the middle of a data table (other than rewrite the program and add it to the database table), please let me know.
Otherwise, please close and refund points.
0
 
dcassAuthor Commented:
I decided to give point for responding -
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.