我在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个标签,因此每一列将分配给每个标签。
答案 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"]);
由于我不知道我在使用索引编制的列名。
希望有帮助