#region Properties /// <summary> /// Represents the property for Grid View Data Source /// </summary> public DataTable GridData { get { if (ViewState["GridData"] == null) { DataTable GridData = new DataTable(); GridData.Columns.Add(new DataColumn("IndexNumber")); GridData.Columns.Add(new DataColumn("ItemNumber")); GridData.Columns.Add(new DataColumn("Particulars")); GridData.Columns.Add(new DataColumn("Quantity")); GridData.Columns.Add(new DataColumn("Meters")); GridData.Columns.Add(new DataColumn("Rate")); GridData.Columns.Add(new DataColumn("AddLess")); GridData.Columns.Add(new DataColumn("Amount")); GridData.Columns.Add(new DataColumn("AddRow")); DataRow row = GridData.NewRow(); row["IndexNumber"] = "1"; row["ItemNumber"] = "ItemNumber"; row["Particulars"] = "Particulars"; row["Quantity"] = "Quantity"; row["Meters"] = "Meters"; row["Rate"] = "Rate"; row["AddLess"] = "AddLess"; row["Amount"] = "Amount"; row["AddRow"] = "AddRow"; GridData.Rows.Add(row); return GridData; } return ViewState["GridData"] as DataTable; } set { ViewState["GridData"] = value; } } /// <summary> /// Represents the property for Grid row Index /// </summary> public int Index { get { if (ViewState["Index"] == null) { ViewState["Index"] = 0; return 0; } int index = (int)ViewState["Index"]; index += 1; ViewState["Index"] = index; return index; } set { ViewState["Index"] = value; } } #endregion #region Page Methods /// <summary> /// Represents the page method that is called on Page load /// </summary> /// <param name="sender"> /// An <see cref="System.Object"/> that holds the sender's instance /// </param> /// <param name="e"> /// An <see cref="System.EventArgs"/> that holds the event argument /// </param> protected void Page_Load(object sender, EventArgs e) { DefineGridColoumns(); grdParticulars.DataSource = this.GridData; grdParticulars.DataBind(); } #endregion #region Gridview Events /// <summary> /// Represents the event handler of Grid Data Bind /// </summary> /// <param name="sender"> /// An <see cref="System.Object"/> that holds the sendes's instance /// </param> /// <param name="e"> /// An <see cref="System.Web.UI.WebControls.GridViewRowEventArgs"/> that holds the Grid view row event Argument /// </param> protected void OnGridDataBound(object sender, GridViewRowEventArgs e) { grdParticulars.Columns.Clear(); if (e.Row.RowType == DataControlRowType.Header || e.Row.RowType == DataControlRowType.Footer) return; //int index = this.Index; String buttonID = String.Format("btn{0}", e.Row.Cells[0].Text); // Label for index coloumn Label IndexColoumn = new Label(); IndexColoumn.ID = "lbl" + e.Row.Cells[0].Text; IndexColoumn.Text = e.Row.Cells[0].Text; e.Row.Cells[0].Controls.Add(IndexColoumn); // Text box for Item Number TextBox Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtItemNumber" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(90); e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[1].Controls.Add(Items); AutoCompleteExtender AutoComplete = new AutoCompleteExtender(); AutoComplete.ID = "txtItemNumber"; AutoComplete.ServiceMethod = "GetProducts"; AutoComplete.TargetControlID = Items.ID; AutoComplete.CompletionInterval = 1000; AutoComplete.EnableCaching = true; AutoComplete.MinimumPrefixLength = 1; AutoComplete.CompletionSetCount = 20; e.Row.Cells[1].Controls.Add(AutoComplete); // Text box for Particulars Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtParticulars" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(99); e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[2].Controls.Add(Items); AutoComplete = new AutoCompleteExtender(); AutoComplete.ID = "txtParticularsAutoComplete"; AutoComplete.ServiceMethod = "GetProducts"; AutoComplete.TargetControlID = Items.ID; AutoComplete.CompletionInterval = 1000; AutoComplete.EnableCaching = true; AutoComplete.MinimumPrefixLength = 1; AutoComplete.CompletionSetCount = 20; e.Row.Cells[2].Controls.Add(AutoComplete); //// Text box for Quantity Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtQuantity" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(90); e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[3].Controls.Add(Items); // Text box for Meters Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtMeters" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(90); e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[4].Controls.Add(Items); // Text box for Rate Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtRate" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(90); e.Row.Cells[5].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[5].Controls.Add(Items); // Text box for AddLess Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtAddLess" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(90); e.Row.Cells[6].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[6].Controls.Add(Items); // Text box for Amount Items = new TextBox(); Items.AutoCompleteType = AutoCompleteType.None; Items.ID = "txtAmount" + e.Row.Cells[0].Text; Items.Width = Unit.Percentage(90); e.Row.Cells[7].Controls.Add(Items); Button AddRow = new Button(); AddRow.ID = "btn"; AddRow.Text = "+"; AddRow.Width = Unit.Percentage(100); AddRow.CommandName = buttonID; AddRow.Click += new EventHandler(AddRow_Click); e.Row.Cells[8].HorizontalAlign = HorizontalAlign.Center; e.Row.Cells[8].Controls.Add(AddRow); } /// <summary> /// Represents the event handler of Grid view add row Button /// </summary> /// <param name="sender"> /// An <see cref="System.Object"/> that holds the sender's instance /// </param> /// <param name="e"> /// An <see cref="System.EventArgs"/> that holds the event argument /// </param> void AddRow_Click(object sender, EventArgs e) { DataTable Table = this.GridData; int index = this.Index; index += 2; DataRow row = Table.NewRow(); row["IndexNumber"] = index; row["Particulars"] = "Particulars" + index; row["AddRow"] = "AddRow" + index; Table.Rows.Add(row); this.GridData = Table; DefineGridColoumns(); grdParticulars.DataSource = this.GridData; grdParticulars.DataBind(); } #endregion #region Gridview Methods /// <summary> /// Represents the method for Grid template definition /// </summary> private void DefineGridColoumns() { grdParticulars.Columns.Clear(); BoundField boundColumn = new BoundField(); boundColumn.DataField = "IndexNumber"; grdParticulars.Columns.Insert(0, boundColumn); TemplateField TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "ItemNumber"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); TemplateColoumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; grdParticulars.Columns.Insert(1, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "Particluars"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(65); TemplateColoumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; grdParticulars.Columns.Insert(2, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "Quantity"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); grdParticulars.Columns.Insert(3, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "Meters"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); grdParticulars.Columns.Insert(4, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "Rate"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); grdParticulars.Columns.Insert(5, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "AddLess"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); grdParticulars.Columns.Insert(6, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "Amount"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); grdParticulars.Columns.Insert(7, TemplateColoumn); TemplateColoumn = new TemplateField(); TemplateColoumn.HeaderText = "AddRow"; TemplateColoumn.HeaderStyle.Width = Unit.Percentage(5); grdParticulars.Columns.Insert(8, TemplateColoumn); grdParticulars.HeaderStyle.BackColor = Color.Beige; }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)