【问题标题】:calculate Total value in Dynamically generated textbox在动态生成的文本框中计算总值
【发布时间】:2010-02-24 07:59:55
【问题描述】:

我正在使用网站应用程序,在该网站中,我动态创建了下拉列表和文本框...该下拉列表包含费用列表...我在下拉列表中选择一种费用类型并在文本框中输入一些金额..然后我在下拉列表中再次选择一种类型的费用并在文本框中输入一些金额...最后我在下拉列表中选择一个名为总金额的文本它必须自动生成所有文本框的总值(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();

}

现在我该怎么做?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

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

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

    【讨论】:

    • 我应该在哪里分配这个总数?
    • 很清楚。当 DropDown Selected Index 更改时。- 毕竟,您可以在任何您喜欢的地方显示 Total。甚至您可以在页面的某处显示总计,每当用户更改下拉菜单中的索引时,总计值就会显示总计。
    【解决方案2】:

    只需在 DropDown_SelectedIndexChanged 中分配总计

     protected void DropDown_SelectedIndexChanged(object sender, EventArgs e)
     {
    
         int total = Convert.ToInt32(TextBox1.Text) + Convert.Toint32(TextBox2.Text);
         TextBox3.Text = total;
     }
    

    【讨论】:

    • 我没有文本框作为文本框 1、文本框 2 和文本框 3...我已将文本框生成为动态...
    • 然后给你动态生成的事件一个id
    【解决方案3】:

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

      <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;
            }
    

    如果我错了,请纠正我,如果它有效,请点赞,并且总是只将您想要动态更新的控件放在更新面板中。 您也可以通过 jquery 来完成,如果您愿意,我也可以编写它的代码吗?

    【讨论】:

    • 我建议对文本框输入进行一些验证,如果用户输入 'one' 而不是 1,或者除了数字之外的其他内容怎么办?
    • @Tony:我认为他只是在询问服务器端代码,他可能更早地验证了他的页面,因此文本框只能具有 int 类型的值。不在
    【解决方案4】:

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

    另外,为什么要在视图状态中包含数据表?为什么不将其存储在会话中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-07
      • 2021-01-14
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多