Сумма столбца в несколько колонок динамическое GridView с помощью JavaScript
У меня динамический GridView в АСП со всеми колоннами, а поле шаблона текстового поля. Столбцы Gridview также являются динамическими, и количество столбцов может меняться каждый раз.
Пожалуйста, найдите код ниже
public void FillPoDetails() { DataTable dt = new DataTable(); dt = pmdata.createdatatable(int.Parse(Session["OurStyleid"].ToString()), int.Parse(Session["PoPackid"].ToString())); GenerateTable(dt.Columns.Count, dt.Rows.Count,dt); foreach (DataColumn col in dt.Columns) { //Declare the bound field and allocate memory for the bound field. TemplateField bfield = new TemplateField(); //Initalize the DataField value. bfield.HeaderTemplate = new ArtWebApp.Controls.GridViewTemplate(ListItemType.Header, col.ColumnName); //Initialize the HeaderText field value. bfield.ItemTemplate = new ArtWebApp.Controls.GridViewTemplate(ListItemType.Item, col.ColumnName); //Add the newly created bound field to the GridView. GrdDynamic.Columns.Add(bfield); } GrdDynamic.DataSource = dt; GrdDynamic.DataBind(); } public GridViewTemplate(ListItemType type, string colname) { //Stores the template type. _templateType = type; //Stores the column name. _columnName = colname; } void ITemplate.InstantiateIn(System.Web.UI.Control container) { switch (_templateType) { case ListItemType.Header: //Creates a new label control and add it to the container. Label lbl = new Label(); //Allocates the new label object. lbl.Text = _columnName; lbl.CssClass = "Headerclass"; //Assigns the name of the column in the lable. container.Controls.Add(lbl); //Adds the newly created label control to the container. break; case ListItemType.Item: //Creates a new text box control and add it to the container. TextBox tb1 = new TextBox(); //Allocates the new text box object. tb1.DataBinding += new EventHandler(tb1_DataBinding); //Attaches the data binding event. tb1.Columns =6; //Creates a column with size 4. // tb1.Width = System.Web.UI.WebControls.Unit.Percentage(100); tb1.Width = 100; tb1.Wrap = true; tb1.ID = "txt_" + _columnName; if(_columnName== "ColorTotal") { tb1.CssClass = "ColorTotal"; } else if (_columnName == "Color") { tb1.CssClass = "Color"; } else { tb1.CssClass = "txtCalQty"; tb1.Attributes.Add("onkeypress", "return isNumberKey(event,this)"); tb1.Attributes.Add("onkeyup", "sumofQty(this)"); } container.Controls.Add(tb1); //Adds the newly created textbox to the container. break; } }
И для того, чтобы получить общее количество строк, я добавил функцию Javascript для события keydown, и она работает четко
//calculate the sum of qty on keypress function sumofQty(objText) { var cell = objText.parentNode; var row = cell.parentNode; var sum = 0; var textboxs = row.getElementsByClassName("txtCalQty"); for (var i = 0; i < textboxs.length; i++) { sum += parseFloat(textboxs[i].value); } var textboxtotalqtys = row.getElementsByClassName("ColorTotal"); textboxtotalqtys[0].value = sum.toString(); }
может ли кто-нибудь помочь мне узнать сумму каждого столбца(все тот же cssclass) и отобразить ее в строке Sizetotal, потому что
Что я уже пробовал:
Я не могу перебирать столбцы
//calculate the sum of qty on keypress function sumofQty(objText) { var cell = objText.parentNode; var row = cell.parentNode; var sum = 0; }