计算动态生成的文本框中的总值

时间:2010-02-24 07:59:55

标签: c# asp.net

我正在使用网站应用程序,在该网站中,我已经动态创建了下拉列表和文本框...该下拉列表包含费用列表...我在下拉列表中选择一种费用并在文本框中输入一些金额。然后我再次在Dropdownlist中选择一种类型的费用并在文本框中输入一些金额...最后我选择一个名为Dropdownlist中的总金额的文本,它必须自动生成所有文本框(beforeCreated)的总值到底文本框......

如何获得文本框末尾的总值.... 任何人都告诉我这个解决方案.. 在此先感谢...

我的代码:         //此功能用于创建网格,该网格将添加动态生成的下拉列表和文本框

     public void SetInitalRowFees()
    {
    DataTable dtFees = new DataTable();
    DataRow drFees = null;
    dtFees.Columns.Add(new DataColumn("Sno", typeof(string)));
    dtFees.Columns.Add(new DataColumn("Column1", typeof(string)));
    dtFees.Columns.Add(new DataColumn("Column2", typeof(string)));
    drFees = dtFees.NewRow();
    drFees["Sno"] = 1;
    drFees["Column1"] = string.Empty;
    drFees["Column2"] = string.Empty;
    dtFees.Rows.Add(drFees);
    //Store the DataTable in ViewState
    ViewState["CurrentTableFees"] = dtFees;
    // Session["CurrentTable"] = dt;
    GrdFeesStructure.DataSource = dtFees.DefaultView;
    GrdFeesStructure.DataBind();
}



  //This function is used to add a new dropdownlist and textbox controls

    public void AddFeesStructureGrid()
    {
    int rowIndex = 0;
    if (ViewState["CurrentTableFees"] != null)
    {
        DataTable dtCurrentTable = (DataTable)ViewState["CurrentTableFees"];
        DataRow drCurrentRow = null;
        if (dtCurrentTable.Rows.Count > 0)
        {
            for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
            {
                DropDownList box1 = (DropDownList)GrdFeesStructure.Rows[rowIndex].Cells[1].FindControl("ddlFeesDetails");
                TextBox box2 = (TextBox)GrdFeesStructure.Rows[rowIndex].Cells[2].FindControl("txtAmount");
                drCurrentRow = dtCurrentTable.NewRow();
                drCurrentRow["Sno"] = i + 1;
                dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
                dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
                rowIndex++;
            }
            dtCurrentTable.Rows.Add(drCurrentRow);
            ViewState["CurrentTableFees"] = dtCurrentTable;
            GrdFeesStructure.DataSource = dtCurrentTable;
            GrdFeesStructure.DataBind();
        }
    }
    else
    {
        Response.Write("ViewState is null");
    }

    SetFeesStructureData();

}

现在我该怎么做?

4 个答案:

答案 0 :(得分:1)

您只需要在下拉列表中更改索引时,请阅读文本框值并将其添加到上一个总计中,如下所示

 protected void DropDown_SelectedIndexChanged(object sender, EventArgse)
 {
     // your other code
     int total += int.parse(TextBox1.Text);
 }

答案 1 :(得分:1)

只需在DropDown_SelectedIndexChanged中分配总数

 protected void DropDown_SelectedIndexChanged(object sender, EventArgs e)
 {

     int total = Convert.ToInt32(TextBox1.Text) + Convert.Toint32(TextBox2.Text);
     TextBox3.Text = total;
 }

答案 2 :(得分:0)

您必须在updatepanel(ajax)&amp;中添加第三个下拉列表。然后在其Onselectedindexchanged事件中检索第一个&amp;第二个文本框的值添加&amp;将其显示在第三个文本框中。这是它的代码 客户端代码:

  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <asp:DropDownList ID="ddlTotal" runat="server" OnSelectedIndexChanged="totalChange"></asp:DropDownList></ContentTemplate>
        </asp:UpdatePanel>

服务器端代码:

 protected void totalChange(object sender, EventArgs e)
        {
            txtTotalFee.Text = Convert.ToInt32(txtFee1.Text)+ Convert.ToInt32(txtFee2.Text;
        }

如果我错了,请纠正我。 upvote如果它工作&amp; alwayz只在updatepanel中放置你想要动态更新的控件。 您也可以通过jquery来完成它我也可以编写它的代码吗?

答案 3 :(得分:0)

您没有指定是要在客户端(javascript)还是服务器端执行此操作。有关如何在客户端check this SO post进行操作的答案。您的问题基本上没有什么不同,您可能需要做的就是在计算过程中包含一两个额外的控件,如果您这样做,那么只需使用相同的方法扩展代码。

另外,为什么要在viewstate中包含数据表?为什么不将它存储在会话中?