我正在使用网站应用程序,在该网站中,我已经动态创建了下拉列表和文本框...该下拉列表包含费用列表...我在下拉列表中选择一种费用并在文本框中输入一些金额。然后我再次在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();
}
现在我该怎么做?
答案 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中包含数据表?为什么不将它存储在会话中?