所选索引中网格中文本框的Asp.Net更改值已更改

在此处输入图像描述

我有这个网格,我动态添加控件。 现在我想更改产品选择索引更改事件的成本价格和销售价格的相应值。 问题是我无法获得具体的行。 在我到目前为止的代码下面。

                         Total Journal Cost:                

而我的代码背后是

  #region Private Functions private void FirstGridViewRow() { DataTable dt = new DataTable(); DataRow dr = null; dt.Columns.Add(new DataColumn("RowNumber", typeof(string))); dt.Columns.Add(new DataColumn("Products", typeof(string))); dt.Columns.Add(new DataColumn("CostPrice", typeof(string))); dt.Columns.Add(new DataColumn("SalePrice", typeof(string))); dt.Columns.Add(new DataColumn("TotalUnits", typeof(string))); dt.Columns.Add(new DataColumn("TotalCost", typeof(string))); dr = dt.NewRow(); dr["RowNumber"] = 1; dr["Products"] = string.Empty; dr["CostPrice"] = string.Empty; dr["SalePrice"] = string.Empty; dr["TotalUnits"] = string.Empty; dr["TotalCost"] = string.Empty; dt.Rows.Add(dr); ViewState["CurrentTable"] = dt; grdSales.DataSource = dt; grdSales.DataBind(); AddNewRow(); SetRowData(); if (ViewState["CurrentTable"] != null) { DataTable dtOld = (DataTable)ViewState["CurrentTable"]; DataRow drCurrentRow = null; int rowIndex = Convert.ToInt32(0); if (dtOld.Rows.Count > 1) { dtOld.Rows.Remove(dt.Rows[rowIndex]); drCurrentRow = dtOld.NewRow(); ViewState["CurrentTable"] = dtOld; grdSales.DataSource = dtOld; grdSales.DataBind(); for (int i = 0; i  0) { for (int i = 1; i  0) { for (int i = 0; i 
0) { for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) { DropDownList ddlProducts = (DropDownList)grdSales.Rows[rowIndex].Cells[1].FindControl("ddlProducts"); TextBox txtCostPrice = (TextBox)grdSales.Rows[rowIndex].Cells[2].FindControl("txtCp"); TextBox txtSalePrice = (TextBox)grdSales.Rows[rowIndex].Cells[3].FindControl("txtSp"); TextBox txtUnits = (TextBox)grdSales.Rows[rowIndex].Cells[4].FindControl("txtUnits"); TextBox txtTotal = (TextBox)grdSales.Rows[rowIndex].Cells[5].FindControl("txtTotal"); drCurrentRow = dtCurrentTable.NewRow(); drCurrentRow["RowNumber"] = i + 1; dtCurrentTable.Rows[i - 1]["Products"] = ddlProducts.Text; dtCurrentTable.Rows[i - 1]["CostPrice"] = txtCostPrice.Text; dtCurrentTable.Rows[i - 1]["SalePrice"] = txtSalePrice.Text; dtCurrentTable.Rows[i - 1]["TotalUnits"] = txtUnits.Text; dtCurrentTable.Rows[i - 1]["TotalCost"] = txtTotal.Text; rowIndex++; } ViewState["CurrentTable"] = dtCurrentTable; //grvStudentDetails.DataSource = dtCurrentTable; //grvStudentDetails.DataBind(); } } else { Response.Write("ViewState is null"); } //SetPreviousData(); } private void BindControls() { BindWarehouseDdl(); BindStaticLists(); } private Dictionary BindProductsDdl() { Dictionary Get = new Dictionary(); for (int i = 0; i < Products.Count; i++) { int id = Convert.ToInt32(Products[i].id); string name = Products[i].Name; Get.Add(id, name); } return Get; } private void BindStaticLists() { Classes.CProducts cp = new Classes.CProducts(); Products = cp.GetAll(); } private void BindWarehouseDdl() { Dictionary Items = new Dictionary(); List get = new List(); Classes.CWareHouse cw = new Classes.CWareHouse(); get = cw.GetAll(); for (int i = 0; i < get.Count; i++) { string id = get[i].id; string name = get[i].Name; Items.Add(Convert.ToInt32(id), name); } ddlWareHouse.DataTextField = "Value"; ddlWareHouse.DataValueField = "Key"; ddlWareHouse.DataSource = Items; ddlWareHouse.DataBind(); } #endregion protected void ddlProducts_SelectedIndexChanged(object sender, EventArgs e) { } protected void grdSales_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow gr = grdSales.SelectedRow; }

解决了它

 protected void ddlProducts_SelectedIndexChanged(object sender, EventArgs e) { DropDownList ddl = (DropDownList)sender; GridViewRow row = (GridViewRow)ddl.NamingContainer; TextBox txtName = (TextBox)row.FindControl("txtCp"); txtName.Text = "*****"; }