对此非常陌生。我已经基本完成了
.aspx
代码。我知道数据源连接信息,只是尝试在页面加载时运行并显示存储过程的输出。这将是一个报告,仅显示从列表中选择该项目和页面加载时的结果。对于尼安德雷特人对此的理解表示歉意......
我一直在研究
.aspx.cs
文件中页面加载时存储过程的调用。
好的,一般步骤是:
首先,设置与 SQL Server 的连接。
因此,在项目文件夹中,您要创建一个连接。因此,这将导致您的连接只有一个位置,从而避免应用程序中各处出现多个连接。
由此产生的数据库连接可以反复使用。
所以,项目->属性。
然后选择设置选项卡。
因此,我们像这样创建数据库连接:
请注意,我“经常”使用“。” (点)作为服务器名称,这样您就不需要输入数据库服务器名称。
好的,现在我们有了有效的连接。
现在,这是我们的存储过程,它允许我们将城市名称传递给过程,以根据给定的城市参数返回酒店列表。
那么,这个存储过程:
CREATE PROCEDURE GetHotelsByCity
@City nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM tblHotelsA WHERE City = @City
ORDER BY HotelName
END
GO
好的,现在我们的网页标记了。我们将使用 GridView 来显示结果。
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="ID"
CssClass="table table-hover" Width="50%">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="HotelName" HeaderText="HotelName" />
<asp:BoundField DataField="Description" HeaderText="Description" />
</Columns>
</asp:GridView>
所以,现在我们的代码在页面加载事件中。
请记住,对于页面上的任何和所有按钮单击,每次都会触发页面加载事件。因此,在几乎所有情况下,您都希望此类加载代码仅在真正的首页加载时运行。
因此,我们测试/检查内置的 IsPostBack 标志,并且仅在第一个实际页面加载时提取数据。
因此这段代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dtHotels = new DataTable();
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.MyDB))
{
using (SqlCommand cmd = new SqlCommand("GetHotelsByCity", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@City", SqlDbType.NVarChar).Value = "Edmonton";
con.Open();
dtHotels.Load(cmd.ExecuteReader());
}
}
GridView1.DataSource = dtHotels;
GridView1.DataBind();
}
}
结果是这样的: