0

我试图在 ASPX 页面上显示下面的查询值(总计),但我一直得到 0。当我输入断点并调试时,总计都应该等于 15.0。该值在从中提取的 MS SQL 数据库中保存为小数。

.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”,一个是本地的,一个是全局的。本地的正在更新,但全局的正在页面上输出。

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

您正在引用两个不同的变量,一个全局变量和一个局部变量。您将本地 var 设置为 0,但随后访问全局,只需删除以下行:

double total = 0;
于 2013-05-10T20:03:07.323 回答
0

尝试使用 aLabel输出您的值

<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 回答