2

私は自分のaspxプログラムに取り組んでいますが、いくつかの値を入力できるようにしたい電卓があります.Tabキーを押して次の値を入力すると、自動的に計算されてテキストボックスに書き込まれます(またはラベル)。これは、ページを更新する必要がありません。これは c# と組み合わせて可能でしょうか、それともこれを行うには php + ajax を探す必要がありますか?

私は次のようにコーディングしました:

<asp:TextBox ID="tbx_rms" onchanged="textboxcalc" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_volt" onchanged="textboxcalc" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_anw1" Enabled="false" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_anw2" Enabled="false" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_eff" onchanged="textboxcalc" runat="server"></asp:TextBox>    
<asp:TextBox ID="tbx_anw3" Enabled="false"  runat="server"></asp:TextBox>

これはc#コードです:

public void textboxcalc(object sender, EventArgs e)
    {
        if (tbx_rms.Text != "" && tbx_volt.Text != "")
        {
            double rms = Convert.ToDouble(tbx_rms.Text);
            double volt = Convert.ToDouble(tbx_volt.Text);
            double ant = Convert.ToDouble(rms / volt);
            if (tbx_eff.Text != "")
            {
                double effi = Convert.ToDouble(tbx_eff.Text);
                double tot = Convert.ToDouble((effi / ant) * 100);
                tbx_anw3.Text = Convert.ToString(tot);
            }
            tbx_anw1.Text = Convert.ToString(ant);
            tbx_anw2.Text = Convert.ToString(ant);

        }

私の意図が十分に明確であることを願っています。そうでない場合は、喜んで質問にお答えします。

4

6 に答える 6

2

コメントを聞いた後、私は先に進み、JavaScriptを使用してこの計算を行いました。

<script type="text/javascript">
    function calctxtboxes() {
        var rms = document.getElementById('<%=tbx_rms.ClientID%>').value;
        var volt = document.getElementById('<%=tbx_volt.ClientID%>').value;
        var effi = document.getElementById('<%=tbx_eff.ClientID%>').value;
        if (rms != "" && volt !="") {
            var ant = rms / volt;
            document.getElementById('tbx_anw1').value = ant;
            document.getElementById('tbx_anw2').value = ant;
            if (effi != "") {
                var total = (ant / effi)*100;
                document.getElementById('tbx_anw3').value = total;
            }
        }
    }
</script>

そして、次のようなaspx:

<asp:TextBox ID="tbx_rms" onchange="calctxtboxes()" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_volt" onchange="calctxtboxes()" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_anw1" Enabled="false" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_anw2" Enabled="false" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_eff" onchange="calctxtboxes()" runat="server"></asp:TextBox>    
<asp:TextBox ID="tbx_anw3" Enabled="false"  runat="server"></asp:TextBox>
于 2013-05-31T09:47:20.403 に答える
1

これを実現するには、コントロール トリガーで UpdatePanel を使用し、イベントの原因となったテキスト ボックスに AutoPostback="true" を設定します。

<asp:TextBox ID="tbx_rms" onchanged="textboxcalc" AutoPostback="true" runat="server"></asp:TextBox>
<asp:TextBox ID="tbx_volt" onchanged="textboxcalc" AutoPostback="true" runat="server"></asp:TextBox>
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="tbx_rms" />
        <asp:AsyncPostBackTrigger ControlID="tbx_volt" />
        <asp:AsyncPostBackTrigger ControlID="tbx_eff" />
    </Triggers>
    <ContentTemplate>
      <asp:TextBox ID="tbx_anw1" Enabled="false" runat="server"></asp:TextBox>
      <asp:TextBox ID="tbx_anw2" Enabled="false" runat="server"></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>
<asp:TextBox ID="tbx_eff" onchanged="textboxcalc" AutoPostback="true" runat="server"></asp:TextBox>    
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="tbx_rms" />
        <asp:AsyncPostBackTrigger ControlID="tbx_volt" />
        <asp:AsyncPostBackTrigger ControlID="tbx_eff" />
    </Triggers>
    <ContentTemplate>
        <asp:TextBox ID="tbx_anw3" Enabled="false" runat="server"></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>
于 2013-05-31T21:53:25.983 に答える
0

まず、PHP は必要ありません。値がサーバーに戻ったときに何かを実行したい場合を除き、C# も実際には必要ありません。前述の 3 つのうち、JavaScript が最適なオプションです。数学をしている場合は、丸めやその他の種類の数学に関して、JavaScript が常に C# と同じように動作するとは限らないことに注意してください。

クライアントスクリプト(おそらくJavaScriptの形式)を介してテキストボックスを更新できる場合、ユーザーが送信ボタンをクリックするだけで、値がサーバーに送り返されます。 、値をサーバーに送り返す必要があると仮定します。

C# に既にある計算をクライアント スクリプトに実装するだけで、テキスト ボックスが更新されます。次に、送信ボタンをクリックして値をポストバックし、値をキャプチャして、必要な処理を行います。計算を入れるテキストボックスはコード内に既に存在するため、既存の送信ボタンをクリックすると値がサーバーに送り返されることに注意してください。

これを行う方法がわからない場合は、方法を知っていることを実装し、作成した新しいコードで質問を更新して行ったことについてここにコメントし、行き詰まっている場所を指定してください。問題。

JavaScriptを実行するためにライブラリを使用したいでしょうが、ここに私が書いたばかりの例があります. 、しかし、必要なコードの量と単純さの観点から、それがどのようなものであるべきかを少し理解するのに役立つはずです。

<html>
    <head>
        <title>Calculations</title>
        <script type="text/javascript">
        function UpdateCalculation(f)
        {
            if (f.tbx_rms.value !== "" && f.tbx_volt.value !== "")
            {
                var rms = f.tbx_rms.value;
                var volt = f.tbx_volt.value;
                var ant = rms / volt;

                if (f.tbx_eff.value !== "")
                {
                    var effi = f.tbx_eff.value;
                    var tot = (effi / ant) * 100;
                    f.tbx_anw3.value = tot;
                }
                f.tbx_anw1.value = ant;
                f.tbx_anw2.value = ant;
            }
        }
        </script>
    </head>
    <body>
        <form name="calcForm">
            <input type="input" id="tbx_rms" name="tbx_rms" onchange="javascript:UpdateCalculation(calcForm)" />
            <input type="input" id="tbx_volt" name="tbx_volt" onchange="javascript:UpdateCalculation(calcForm)" />
            <input type="input" id="tbx_anw1" name="tbx_anw1" />
            <input type="input" id="tbx_anw2" name="tbx_anw2" />
            <input type="input" id="tbx_eff" name="tbx_eff" onchange="javascript:UpdateCalculation(calcForm)" />
            <input type="input" id="tbx_anw3" name="tbx_anw3" />
        </form>
    </body>
</html>
于 2013-05-31T07:31:31.570 に答える
0

以前のプロジェクトでこのプラグインを使用しました

http://www.pengoworks.com/workshop/jquery/calculation/calculation.plugin.htm

例でわかるように、それは非常に簡単です。jQuery セレクターも検索したい場合があります。あなたのような単純な計算の場合、上記のように、サーバー側を使用して計算するのはやり過ぎかもしれません。

于 2013-05-31T07:43:08.790 に答える