0

ASPX ページで (合計) 以下のクエリの値を表示しようとしていますが、0 を取得し続けます。ブレークポイントを配置して合計をデバッグすると、すべてが 15.0 になります。値は、取得元の MS SQL データベースに 10 進数として保存されます。

.cs ページ

public partial class Payment : System.Web.UI.Page
{
    public double total;

    protected void Page_Load(object sender, EventArgs e)
    {
        var id = Request.Params["ID"];
        System.Data.OleDb.OleDbConnection conn;
        System.Data.OleDb.OleDbCommand cmd;
        conn = new System.Data.OleDb.OleDbConnection("--");
        cmd = new System.Data.OleDb.OleDbCommand();
        conn.Open();
        cmd.Connection = conn;
        var sql = String.Format(@"select sum(PayAmt) as total from CurePay where CureID = '{0}'", id);
        cmd.CommandText = sql;
        double total = 0;
        total = Convert.ToDouble(cmd.ExecuteScalar());
        conn.Close();

.ASPX ページ

<%= total %>
4

4 に答える 4

3

あなたのコードから、「total」という名前の 2 つの個別の変数、1 つはローカル、もう 1 つはグローバルを使用しているように見えます。ローカルのものは更新されていますが、グローバルなものはページに出力されています。

public partial class Payment : System.Web.UI.Page
   {
       public double total; //<< keep this one

       protected void Page_Load(object sender, EventArgs e)
     {
        var id = Request.Params["ID"];
        System.Data.OleDb.OleDbConnection conn;
        System.Data.OleDb.OleDbCommand cmd;
        conn = new System.Data.OleDb.OleDbConnection("--");
        cmd = new System.Data.OleDb.OleDbCommand();
        conn.Open();
        cmd.Connection = conn;
        var sql = String.Format(@"select sum(PayAmt) as total from CurePay where CureID = '{0}'", id);
        cmd.CommandText = sql;
        double total = 0; // << remove the double keyword from this line
        total = Convert.ToDouble(cmd.ExecuteScalar());
        conn.Close();

これで問題が解決するはずです...

于 2013-05-10T20:00:34.737 に答える
1

より一般的なアプローチは、メイン ページに を配置し、Page_Load 関数から割り当てることです。

<asp:Label ID="lblNumber" runat="server" />


 protected void Page_Load(object sender, EventArgs e)
 {
     // database stuff
     lblNumber.Text = total;
 }
于 2013-05-10T20:01:51.540 に答える
1

グローバル変数とローカル変数の 2 つの異なる変数を参照しています。ローカル var を 0 に設定していますが、グローバルにアクセスするには、次の行を削除するだけです。

double total = 0;
于 2013-05-10T20:03:07.323 に答える
0

Labela を使用して値を出力してみてください

<asp:Label ID="lblValue" runat="server" />

次に、値をラベルに出力します。

lblValue.Text = Convert.ToDouble(cmd.ExecuteScalar()).ToString();
//this cuts out your variable duplication problem

あなたの代わりにこれを使用してください<%= total %>

于 2013-05-10T20:01:33.653 に答える