C# 在ASPX页面上不会显示双精度

C# 在ASPX页面上不会显示双精度,c#,double,C#,Double,我试图在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.

我试图在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 %>

从代码中可以看出,您使用了两个单独的变量名称“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();
公共部分类支付:System.Web.UI.Page
{

public double total;//从代码中可以看出,您使用的是两个单独的变量名称“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();
公共部分类支付:System.Web.UI.Page
{

public double total;//尝试使用
标签来输出您的值

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

使用此标签代替您的

尝试使用
标签来输出您的值

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

使用此选项而不是

一种更传统的方法可能是在主页上放置一个,然后从页面加载功能分配它

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


 protected void Page_Load(object sender, EventArgs e)
 {
     // database stuff
     lblNumber.Text = total;
 }

受保护的无效页面加载(对象发送方、事件参数e)
{
//数据库材料
lblNumber.Text=总计;
}

一种更为传统的方法可能是在主页上放置一个,然后从page_Load函数分配它

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


 protected void Page_Load(object sender, EventArgs e)
 {
     // database stuff
     lblNumber.Text = total;
 }

受保护的无效页面加载(对象发送方、事件参数e)
{
//数据库材料
lblNumber.Text=总计;
}

您引用的是两个不同的变量,一个是全局变量,一个是局部变量。您将局部变量设置为0,但访问全局变量时,只需删除该行:

double total = 0;

您正在引用两个不同的变量,一个全局变量和一个局部变量。您正在将局部变量设置为0,但在访问全局变量时,只需删除该行:

double total = 0;

代码将被编译,因为在不同的作用域中有相似的命名变量是有效的。代码将被编译,因为在不同的作用域中有相似的命名变量是有效的。编辑得很好,我只是想问一下转换为双精度的问题。@kcray,没问题。我发现使用控件是格式化输出的一种更简单的方法nd允许您在以后使用样式和格式设置。编辑非常好,我只是想问一下如何转换为双精度。@kcray,没问题。我发现使用控件可以更容易地设置输出格式,并允许您在以后使用样式和格式设置。