如果我在webform中有不同的asp.net复选框,不同的文本为450,550,500,900

时间:2010-12-13 08:18:14

标签: asp.net vb.net

我在vb.net webform中有不同的复选框,文本不同......

checkbox1.text=100
checkbox2.text=300
checkbox3.text=550 and so on .....

我希望当我检查checkbox1和checkbox2然后在textbox1中文本将是400

意味着复选框i选择所选复选框的太阳将使用VB.NET在文本框中计算....

我正在使用Visual Studio 2008

2 个答案:

答案 0 :(得分:1)

如果您正在查看服务器端代码,那么以下代码应该可以解决问题:

private int mTotal;

private void EnumerateCheckBoxes(Control control)
{
   if (control is CheckBox)
   {
     var check = (CheckBox)control;
     if (check.Checked)
     {
        int value;
        if (int.TryParse(check.Text, out value))
        {
          mTotal += value;
        }
     }
   }
   else if (control.HasControls())
   {
     foreach(var c in control.Controls) 
     {
       EnumerateCheckBoxes(c);
     }
   }
}

protected void Page_Load(Object sender, EventArgs e)
{
   mTotal = 0;
   EnumerateCheckBoxes(this.Form);
   textbox1.Text = mTotal.ToString();
}

虽然这是在C#中,但是移植到VB.NET应该很容易。还有一些其他事情需要考虑:

  1. 此代码将计算单选按钮 以及因为它被继承了 来自CheckBox。如果是这样的话 避免然后用if (control is CheckBox)
  2. 替换if (control.GetType() == typeof(CheckBox))
  3. 如果您想考虑复选框 从CheckBoxList然后你必须 写另一个条件,看看是否 控件是CheckBoxList然后 条件,枚举项目 用复选框列表。物品数到 被添加到总计数时 选定要添加的项目 检查计数。

答案 1 :(得分:0)

使用隐藏字段和一些javascript来设置值,在选中复选框时绑定此事件

function UpdateValue(){
var total= 0;
$('input:checkbox:checked').each(function (i) {
    val = total+ int.parse(this.value); //or html
});
   $('#hiddenValField').html(total) ;
}