调用方法值在后面的页面

时间:2018-07-14 07:50:06

标签: asp.net

我在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);






        }

    }
}

我想在后面的页面中调用此方法的返回值,并将其与label绑定。请提供建议。

在我的页面上,页面加载落后于我

    mail callmail = new mail()

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

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

1 个答案:

答案 0 :(得分:1)

根据讨论和假设,我遵循以下代码

mail.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“ adapter”用于从数据库中获取记录并将其填充到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"]);

由于我不知道我在使用索引编制的列名。

希望有帮助