页面
test.aspx
<body>
    <form id="form1" runat="server">
    <asp:TextBox ID="runTimeTxB" runat="server"></asp:TextBox>
    <asp:TextBox ID="shutDownTimeTxB" runat="server"></asp:TextBox>
    <!--根据前面2个TextBox框输入的值,自动计算停机率并赋值第三个TextBox-->
    <asp:TextBox ID="shutdownRateTxB" runat="server" ></asp:TextBox>  
    </form>
</body>
类文件
test.cs
         //加载页面
 protected void Page_Load(object sender, EventArgs e)
        {
            runTimeTxB.Attributes.Add("onkeyup", "calcShutdownRate();");
            runTimeTxB.Attributes["onkeyup"] = "calcShutdownRate();";
            
        }
        //计算停机率
        private void calcShutdownRate()
        {
                Double x = Convert.ToDouble(runTimeTxB.Text == "" ? "0" : runTimeTxB.Text);
                Double y = Convert.ToDouble(shutDownTimeTxB.Text == "" ? "0" : shutDownTimeTxB.Text);
                Double result = 0;
                if (x != 0 && y != 0)
                    result = Math.Round(y / (x + y) * 100, 2);
                shutdownRateTxB.Text = result.ToString();
        }我需要在页面前台实现TextBox间联动赋值,但是不想用JS,要通过onkeyup来调用类文件.cs中某函数,本来OnTextChanged可以实现,但是OnTextChanged反应不灵敏(需失去焦点才触发)。
所以请问该怎么实现?以上代码执行总报错——calcShutdownRate()未定义
请高手附可执行的详细代码,谢谢

解决方案 »

  1.   

    public void calcShutdownRate()
    后依然不行
      

  2.   

    <form id="form1" runat="server">
            <div>
                <asp:LinkButton ID="LinkButton1" Text="" runat="server" />
                <asp:TextBox ID="shutdownRateTxB" runat="server" onkeyup='javascript:__doPostBack("shutdownRateTxB", "");'  OnTextChanged="shutdownRateTxB_TextChanged1"></asp:TextBox>            
            </div>
        </form>     public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }    protected void shutdownRateTxB_TextChanged1(object sender, EventArgs e)
        {
            calcShutdownRate();
        }

    试试这个。。
      

  3.   

    这个可以有,但是
    这个试过了的,因为WEB的 OnTextChanged是需要文本框失去焦点后才出发,不是我要的实时联动功能哦。
      

  4.   

    非常感谢
    试了一下,功能可以实现,就是每输入一个数字当前输入框会失去焦点。有改进,但仍不完全满足条件。只能写JS处理了...
    能不能像JS中一样不失去焦点触发
      

  5.   

    非常感谢doPostBack起了关键作用。
    添点代码巧妙解决了,就是手动让它再次自动聚焦
            protected void shutDownTimeTxB_TextChanged(object sender, EventArgs e)
            {
                calcShutdownRate();
                shutDownTimeTxB.Focus();
            }    <asp:TextBox ID="shutDownTimeTxB" runat="server" 
            onkeyup='javascript:__doPostBack("shutDownTimeTxB", "");' 
            ontextchanged="shutDownTimeTxB_TextChanged"
            onfocus="cc()"></asp:TextBox>       function cc() {
               var e = event.srcElement;
               var r = e.createTextRange();
               r.moveStart("character", e.value.length);
               r.collapse(true);
               r.select();
           }
      

  6.   

    有没有更好的方法doPostBack用起来一直刷新页面,来回晃不是太好。