首页 > 解决方案 > 在后面的页面上调用方法值

问题描述

我在 mail.cs 文件中有这个方法,它采用一个参数,调用存储过程并从数据库返回值。

   public void select(string type)
{
    string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("EmailSetup_CRUD"))
        {
            cmd.Parameters.AddWithValue("@Action", "SELECT");
            cmd.Parameters.AddWithValue("@Type", type);






        }

    }
}

我想在后面的页面上调用此方法的返回值并将其与标签绑定。请建议如何做到这一点。

在页面加载后面的页面上,我已经这样做了

    mail callmail = new mail()

现在我 label1.text 如何将返回值分配给 label1.text。

方法返回 5 列,我的页面上有 5 个标签,因此每列将分配给每个标签。

标签: asp.net

解决方案


根据讨论和假设,我做了以下代码

邮件.cs

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace tempApp4
{
    public class mail
    {
        public DataTable select(string type)
        {            
            string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("EmailSetup_CRUD", con))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@Action", "SELECT");
                    cmd.Parameters.AddWithValue("@Type", type);

                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataSet dataSet = new DataSet();

                    adapter.Fill(dataSet);

                    return dataSet.Tables[0];
                }

            }
        }
    }
}

WebForm1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="tempApp4.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label ID="label1" runat="server" />
        <asp:Label ID="label2" runat="server" />
        <asp:Label ID="label3" runat="server" />
        <asp:Label ID="label4" runat="server" />
        <asp:Label ID="label5" runat="server" />
    </form>
</body>
</html>

WebForm1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace tempApp4
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            mail mail = new mail();

            var table = mail.select("TYPE_VALUE");

            label1.Text = Convert.ToString(table.Rows[0][0]);
            label2.Text = Convert.ToString(table.Rows[0][1]);
            label3.Text = Convert.ToString(table.Rows[0][2]);
            label4.Text = Convert.ToString(table.Rows[0][3]);
            label5.Text = Convert.ToString(table.Rows[0][4]);
        }
    }
}

SqlDataAdapter “适配器”用于从 DB 中获取记录并将其填充到 dataSet 中。数据集包含许多表,因为您的过程返回单个表,“select”方法最后返回单个表:

return dataSet.Tables[0];

因此“select”方法的返回类型为“DataTable”。然后最后使用邮件类的对象访问代码后面的返回值,并通过访问列来填充标签,如下所示:

label1.Text = Convert.ToString(table.Rows[0][0]);

“table.Rows[0][0]”中的第一个 0 用于行,第二个用于列。对于列,您可以选择将列的名称指定为:

label1.Text = Convert.ToString(table.Rows[0]["COLUMN_NAME"]);

因为我不知道我正在使用索引的列名。

希望能帮助到你


推荐阅读