2017-01-31 1 views
2

Page1.aspx上には、Currencyタイプのものであることを確認するCompare Validatorを持つ3つのtxtBoxがあります。複数のtxtBoxの値を取得し、新しいページに合計を表示する方法は?

On Page2.aspx txtResultという名前の別のテキストボックスがあります。このテキストボックスは、btnCalculateがPage1をクリックしたときに他の3つのtxtBoxesの合計を表示するテキストボックスです。

問題:私は3つのtxtBoxが文字列ではなく2倍として扱われることはありません。 txtBoxの値が1、3、8の場合、txtResultは12ではなく138になります。

私は解析を試みましたが、はコンパイルできませんでした。 Page1の背後

コード:Page2の背後

protected void btnCalculate_Click(object sender, EventArgs e) 
{ 
    if (IsValid) 
    { 
     Server.Transfer("Page2.aspx"); 
    } 
} 

コード:で

txtResult.Text = 
    double.TryParse(((TextBox)lastPage.FindControl("txtGross")).‌​Text, out gross); 

エラー:

を使用する

if (!IsPostBack) 
{ 
    Page lastPage = (Page)Context.Handler; 
    txtResult.Text = ((TextBox)lastPage.FindControl("txtGross")).Text 
     + ((TextBox)lastPage.FindControl("txtValueOfAssets")).Text 
     + ((TextBox)lastPage.FindControl("txtInvestments")).Text; 
} 

試み

boolを暗黙のうちに文字列に変換できません

+0

アレクセイは、多分私はそれが間違ってますが、最初は、私は、次の試してみましたやりましたグロスはダブルです....そして、私は "暗黙のうちにboolを文字列に変換できません" – ratboy

+0

今後の質問は、何が起こるかを厳密に指定します( "禁止"はいくつかの制限があり、エラーをコンパイルしないことを意味します)。私はあなたのコメントを編集し、重複しているような質問をしました。 –

+0

適切な編集と提案をありがとう。 – ratboy

答えて

2

Double.Parse(テキスト)を使用して、テキストをダブルに変換できます。ですから、例えば:私はそれがtxtResult.Textに割り当てることができるように戻ってテキストの答えを変換する).ToString(全体の事をラップするために必要な

txtResult.Text = (Double.Parse(((TextBox)lastPage.FindControl("txtGross")).Text) 
    + Double.Parse(((TextBox)lastPage.FindControl("txtValueOfAssets")).Text) 
    + Double.Parse(((TextBox)lastPage.FindControl("txtInvestments")).Text)).ToString(); 

注意してください。質問は長い文を使用していたが、一般的に私はそれぞれの値を二重に変換し、個々の二重変数に入れて、別の文でそれらを追加し、最後に別の文で答えを文字列に変換してテキストボックスに置きます。私はそのようなマルチステートメントのアプローチを読みやすく、消化しやすいと思っていますが、それは単に個人的な好みです。 ; ` ` txtResult.Text = double.TryParse(。、アウト総額((テキストボックス)lastPage.FindControl( "txtGross"))テキスト):

+0

ああ!私はその文のすべての行をToString()していました。私はマルチステートメントのアプローチも簡単だと思います。ありがとう! – ratboy

+0

OPには「解析しようとしましたが、許可されていませんでした。 - これは質問されるように質問に対する答えではありません。それ以外の場合は、重複して閉じるように投票してください。 –

+0

@AlexeiLevenkov彼が質問した質問は、「複数のtxtBoxの値を取得し、新しいページに合計を表示する方法」でした。彼は仕事をするのを助けたいと思っていた非作業コードを提供しました。私はそれを正確に提供した。投票を削除してください。 –

0

TextBoxのTextプロパティは連結されます。追加する前にText値をdoubleに変換する必要があります。あなたの値は文字列であるので、彼らは文字列として扱われている、と連結されている txtResult.Text = Convert.ToDouble(((TextBox)lastPage.FindControl("txtGross")).Text) + Convert.ToDouble(((TextBox)lastPage.FindControl("txtValueOfAssets")).Text) + Convert.ToDouble(((TextBox)lastPage.FindControl("txtInvestments")).Text);

+0

OPには「解析しようとしましたが許可されませんでした」という指定があります。 - これは質問されるように質問に対する答えではありません。それ以外の場合は、重複して閉じるように投票してください。 –

0

:変換の

簡単な方法はとてもこれを試してConvert.ToDouble("")

です。

これらの値を最初にDoubleに変換してから追加する必要があります。ここ

この投稿はdoubleに変換するためのいくつかのメソッドを語る:本質的にはConverting string to double in C#

、あなたは、二重に、テキストボックスのテキスト値を変換するConvert.ToDouble()メソッドを使用することができます。

Convert.ToDouble(((TextBox)lastPage.FindControl("txtValueOfAssets")).Text) 

TryParse()メソッドを調べて、数値以外の文字列を入力した場合にコードが壊れないようにすることをお勧めします。

+0

OPに「解析しようとしましたが、許可されていませんでした。 - これは質問されるように質問に対する答えではありません。それ以外の場合は、重複して閉じるように投票してください。 –

関連する問題