这里我使用的是GridView控件..我的输出屏幕就是这个..
我的编码是..
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("S.No", typeof(string)));
dt.Columns.Add(new DataColumn("Article No", typeof(string)));
dt.Columns.Add(new DataColumn("Item Description", typeof(string)));
dt.Columns.Add(new DataColumn("Order Quantity", typeof(string)));
dt.Columns.Add(new DataColumn("UOM", typeof(string)));
dt.Columns.Add(new DataColumn("Rate", typeof(string)));
dt.Columns.Add(new DataColumn("Currency", typeof(string)));
dt.Columns.Add(new DataColumn("Amount", typeof(string)));
DataRow dr = dt.NewRow();
dr["S.No"] = 1;
dr["Article No"] = string.Empty;
dr["Item Description"] = string.Empty;
dr["Order Quantity"] = 0;
dr["UOM"] = string.Empty;
dr["Rate"] = 0.00;
dr["Currency"] = string.Empty;
dr["Amount"] = 0.00;
dt.Rows.Add(dr);
ViewState["currenttable"] = dt;
GridView1.DataSource = dt;
GridView1.DataBind();
DropDownList box2 = (DropDownList)GridView1.Rows[0].Cells[1].FindControl("DropDownList1");
box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo();
box2.DataTextField = "Port_Number";
box2.DataValueField = "Description";
box2.DataBind();
box2.Items.Insert(0, " ");
DropDownList box12 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList3");
box12.DataSource = SIMBL.ShowSimpleUnitItemInfo();
box12.DataTextField = "Name";
box12.DataValueField = "Symbol";
box12.DataBind();
box12.Items.Insert(0, " ");
DropDownList box13 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList4");
box13.DataSource = SIMBL.ShowSimpleUnitItemInfo();
box13.DataTextField = "Name";
box13.DataValueField = "Symbol";
box13.DataBind();
box13.Items.Insert(0, " ");
DropDownList box14 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList5");
box14.DataSource = SIMBL.ShowSimpleUnitItemInfo();
box14.DataTextField = "Name";
box14.DataValueField = "Symbol";
box14.DataBind();
box14.Items.Insert(0, " ");
}
}
public void addnewrow()
{
int rowIndex = 0;
if (ViewState["currenttable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["currenttable"];
DataRow drCurrentRow = null;
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
//extract the TextBox values
TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox6");
DropDownList box2 = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("DropDownList1");
TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox8");
TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox9");
TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox10");
TextBox box6 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox11");
Label box7 = (Label)GridView1.Rows[rowIndex].Cells[3].FindControl("Label6");
TextBox box8 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox13");
TextBox box9 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox14");
TextBox box10 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox15");
Label box11 = (Label)GridView1.Rows[rowIndex].Cells[4].FindControl("Label7");
DropDownList box12 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList3");
DropDownList box13 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList4");
DropDownList box14 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList5");
Label box15 = (Label)GridView1.Rows[rowIndex].Cells[5].FindControl("Label8");
TextBox box16 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox17");
TextBox box17 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox18");
TextBox box18 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox19");
Label box19 = (Label)GridView1.Rows[rowIndex].Cells[6].FindControl("Label9");
DropDownList box20 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList7");
DropDownList box21 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList8");
DropDownList box22 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList9");
Label box23 = (Label)GridView1.Rows[rowIndex].Cells[7].FindControl("Label0");
TextBox box24 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox21");
TextBox box25 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox22");
TextBox box26 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox23");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["S.No"] = i + 1;
dtCurrentTable.Rows[i - 1]["Article No"] = box2.Text;
dtCurrentTable.Rows[i - 1]["Item Description"] = box3.Text + "," + box4.Text + "," + box5.Text + "," + box6.Text;
dtCurrentTable.Rows[i - 1]["Order Quantity"] = box8.Text + "," + box9.Text + "," + box10.Text;
dtCurrentTable.Rows[i - 1]["UOM"] = box12.Text + "," + box13.Text + "," + box14.Text;
dtCurrentTable.Rows[i - 1]["Rate"] = box16.Text + "," + box17.Text + "," + box18.Text;
dtCurrentTable.Rows[i - 1]["Currency"] = box20.Text + "," + box21.Text + "," + box22.Text;
dtCurrentTable.Rows[i - 1]["Amount"] = box24.Text + "," + box25.Text + "," + box26.Text;
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["currenttable"] = dtCurrentTable;
GridView1.DataSource = dtCurrentTable;
GridView1.DataBind();
for (int i = 0; i <= dtCurrentTable.Rows.Count - 1; i++)
{
DropDownList box2 = (DropDownList)GridView1.Rows[i].Cells[1].FindControl("DropDownList1");
box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo();
box2.DataTextField = "Port_Number";
box2.DataValueField = "Description";
box2.DataBind();
box2.Items.Insert(0, " ");
DropDownList box12 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList3");
box12.DataSource = SIMBL.ShowSimpleUnitItemInfo();
box12.DataTextField = "Name";
box12.DataValueField = "Symbol";
box12.DataBind();
box12.Items.Insert(0, " ");
DropDownList box13 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList4");
box13.DataSource = SIMBL.ShowSimpleUnitItemInfo();
box13.DataTextField = "Name";
box13.DataValueField = "Symbol";
box13.DataBind();
box13.Items.Insert(0, " ");
DropDownList box14 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList5");
box14.DataSource = SIMBL.ShowSimpleUnitItemInfo();
box14.DataTextField = "Name";
box14.DataValueField = "Symbol";
box14.DataBind();
box14.Items.Insert(0, " ");
}
}
SetPreviousData();
}
private void SetPreviousData()
{
int rowIndex = 0;
if (ViewState["currenttable"] != null)
{
DataTable dt = (DataTable)ViewState["currenttable"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox6");
DropDownList box2 = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("DropDownList1");
TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox8");
TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox9");
TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox10");
TextBox box6 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox11");
Label box7 = (Label)GridView1.Rows[rowIndex].Cells[3].FindControl("Label6");
TextBox box8 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox13");
TextBox box9 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox14");
TextBox box10 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox15");
Label box11 = (Label)GridView1.Rows[rowIndex].Cells[4].FindControl("Label7");
DropDownList box12 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList3");
DropDownList box13 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList4");
DropDownList box14 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList5");
Label box15 = (Label)GridView1.Rows[rowIndex].Cells[5].FindControl("Label8");
TextBox box16 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox17");
TextBox box17 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox18");
TextBox box18 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox19");
Label box19 = (Label)GridView1.Rows[rowIndex].Cells[6].FindControl("Label9");
DropDownList box20 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList7");
DropDownList box21 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList8");
DropDownList box22 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList9");
Label box23 = (Label)GridView1.Rows[rowIndex].Cells[7].FindControl("Label0");
TextBox box24 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox21");
TextBox box25 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox22");
TextBox box26 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox23");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
box1.Text = dt.Rows[i]["S.No"].ToString();
box2.Text = dt.Rows[i]["Article No"].ToString();
if (Convert.ToString(dt.Rows[i]["Item Description"]).Trim() != "")
{
string[] strDesc = Convert.ToString(dt.Rows[i]["Item Description"]).Trim().Split(',');
box3.Text = strDesc[0].ToString();
box4.Text = strDesc[1].ToString();
box5.Text = strDesc[2].ToString();
box6.Text = strDesc[3].ToString();
}
if (Convert.ToString(dt.Rows[i]["Order Quantity"]).Trim() != "")
{
string[] strDesc = Convert.ToString(dt.Rows[i]["Order Quantity"]).Trim().Split(',');
box8.Text = strDesc[0].ToString();
box9.Text = strDesc[1].ToString();
box10.Text = strDesc[2].ToString();
}
if (Convert.ToString(dt.Rows[i]["UOM"]).Trim() != "")
{
string[] strDesc = Convert.ToString(dt.Rows[i]["UOM"]).Trim().Split(',');
box12.Text = strDesc[0].ToString();
box13.Text = strDesc[1].ToString();
box14.Text = strDesc[2].ToString();
}
if (Convert.ToString(dt.Rows[i]["Rate"]).Trim() != "")
{
string[] strDesc = Convert.ToString(dt.Rows[i]["Rate"]).Trim().Split(',');
box16.Text = strDesc[0].ToString();
box17.Text = strDesc[1].ToString();
box18.Text = strDesc[2].ToString();
}
if (Convert.ToString(dt.Rows[i]["Currency"]).Trim() != "")
{
string[] strDesc = Convert.ToString(dt.Rows[i]["Currency"]).Trim().Split(',');
box20.Text = strDesc[0].ToString();
box21.Text = strDesc[1].ToString();
box22.Text = strDesc[2].ToString();
}
if (Convert.ToString(dt.Rows[i]["Amount"]).Trim() != "")
{
string[] strDesc = Convert.ToString(dt.Rows[i]["Amount"]).Trim().Split(',');
box24.Text = strDesc[0].ToString();
box25.Text = strDesc[1].ToString();
box26.Text = strDesc[2].ToString();
}
rowIndex++;
}
}
}
}
//DropDownList Selection Change..
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
TextBox box3 = (TextBox)GridView1.Rows[i].Cells[2].FindControl("TextBox8");
DropDownList box2 = (DropDownList)GridView1.Rows[i].Cells[1].FindControl("DropDownList1");
box3.Text = box2.SelectedItem.Value;
}
}
protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
DropDownList box12 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList3");
box12.Text = box12.SelectedItem.Value;
}
}
protected void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
DropDownList box13 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList4");
box13.Text = box13.SelectedItem.Value;
}
}
protected void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
DropDownList box14 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList5");
box14.Text = box14.SelectedItem.Value;
}
}
protected void DropDownList7_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
decimal a = 0.00M;
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
DropDownList box20 = (DropDownList)GridView1.Rows[i].Cells[6].FindControl("DropDownList7");
box20.Text = box20.SelectedItem.Value;
TextBox box24 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox21");
TextBox box16 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox17");
TextBox box8 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox13");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
box24.Text = (Convert.ToDecimal(box16.Text) * Convert.ToDecimal(box8.Text)).ToString();
if (a != null)
{
box27.Text = (a + Convert.ToDecimal(box24.Text)).ToString();
a = Convert.ToDecimal(box27.Text);
}
else
{
a = 0.00M;
}
}
}
protected void DropDownList8_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
decimal b = 0.00M;
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
DropDownList box21 = (DropDownList)GridView1.Rows[i].Cells[6].FindControl("DropDownList8");
box21.Text = box21.SelectedItem.Value;
TextBox box25 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox22");
TextBox box17 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox18");
TextBox box9 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox14");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
box25.Text = (Convert.ToDecimal(box17.Text) * Convert.ToDecimal(box9.Text)).ToString();
if (b != null)
{
box27.Text = (Convert.ToDecimal(box27.Text) + Convert.ToDecimal(box25.Text)).ToString();
b = Convert.ToDecimal(box27.Text);
}
else
{
b = 0.00M;
}
}
}
protected void DropDownList9_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["currenttable"];
decimal c = 0.00M;
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
DropDownList box22 = (DropDownList)GridView1.Rows[i].Cells[6].FindControl("DropDownList9");
box22.Text = box22.SelectedItem.Value;
TextBox box26 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox23");
TextBox box18 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox19");
TextBox box10 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox15");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
box26.Text = (Convert.ToDecimal(box18.Text) * Convert.ToDecimal(box10.Text)).ToString();
if (c != null)
{
box27.Text = (Convert.ToDecimal(box27.Text) + Convert.ToDecimal(box26.Text)).ToString();
c = Convert.ToDecimal(box27.Text);
}
else
{
c = 0.00M;
}
}
}
//For Button Click...
protected void Button1_Click1(object sender, EventArgs e)
{
addnewrow();
}
这里当我进入第一行时,行中的“数量”单元格控件工作正常。我可以减少行中的单元格计数值。 当我输入下一行时,我需要输入超过前一行单元格数的单元格数。否则我收到的错误如“输入字符串格式不正确”..
总计还根据前面的行单元格计算出来。 如果在每行中输入所有3个单元格值意味着它运行良好.. 如果我在屏幕截图阶段得到错误意味着它只计算所有行中的第1个单元格值..
如果我有第1行第3行值和第2行第2行值意味着它正在计算每个前一行中的2个单元格值。 基于这种方式它正在工作..如何做到这一点?有人帮我解决这个问题...
提前致谢..
答案 0 :(得分:0)
请在以下所有三个下拉事件的循环中更改代码
DropDownList7_SelectedIndexChanged
DropDownList8_SelectedIndexChanged
DropDownList9_SelectedIndexChanged
获得总金额列....
在以上三个事件中替换以下代码...
TextBox box26 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox23");
TextBox box18 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox19");
TextBox box10 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox15");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
box26.Text = (Convert.ToDecimal(box18.Text) * Convert.ToDecimal(box10.Text)).ToString();
if (c != null)
{
box27.Text = (Convert.ToDecimal(box27.Text) + Convert.ToDecimal(box26.Text)).ToString();
c = Convert.ToDecimal(box27.Text);
}
else
{
c = 0.00M;
}
TextBox box24 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox21");
TextBox box16 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox17");
TextBox box8 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox13");
TextBox box25 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox23"); // Second Control of Amount Column
TextBox box26 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox24"); // Third Control of Amount Column
TextBox box17 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox18"); // Second control of Rate Column
TextBox box9 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox14"); // Second control of Order quantity Column
TextBox box18 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox19"); // Third control of Rate Column
TextBox box10 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox15"); // Third control of Order quantity Column
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");
box24.Text = (Convert.ToDecimal(box16.Text) * Convert.ToDecimal(box8.Text)).ToString();
box25.Text = (Convert.ToDecimal(box17.Text) * Convert.ToDecimal(box9.Text)).ToString();
box26.Text = (Convert.ToDecimal(box18.Text) * Convert.ToDecimal(box10.Text)).ToString();
if (a != null)
{
box27.Text = (a + Convert.ToDecimal(box24.Text) + Convert.ToDecimal(box25.Text) + Convert.ToDecimal(box26.Text)).ToString();
a = Convert.ToDecimal(box27.Text);
}
else
{
a = 0.00M;
}