ASP を初めて使用するので、非常に基本的な質問のように感じます。default.aspx.cs ファイルに次のコードがあります。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Get one day ago
DateTime oneDayAgo = DateTime.Now.ToLocalTime().AddDays(-1);
String strOneDayAgo = oneDayAgo.ToString();
//Declare the query string
String queryString = "Select * from Computers Where whenCreated >= '" + strOneDayAgo + "' ORDER BY whenCreated DESC";
//Show the query being used to the user
lblQueryUsed.Text = queryString;
// Run the query and bind the resulting DataSet to the GridView control.
DataSet ds = GetData(queryString);
if (ds.Tables.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
}
すべてうまく機能しますが、問題は、ユーザーがそのページのリンクをクリックして Reports.aspx という別のページに移動すると、同じ Page_Load イベントが発生し、すべてのコントロール (lblQueryUsed、GridView1) が NULL に設定されることです。何らかの理由で、例外が発生します。
Reports.aspx を読み込もうとすると、default.aspx の Page_Load イベントが読み込まれるのはなぜですか? コントロールが null なのはなぜですか?
助けてくれてありがとう。
編集:これがそのページの完全なコードです。他に何が必要ですか?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.DirectoryServices;
using System.Data.SqlClient;
using Sorter;
using System.Data;
namespace AD_watcher_web_app
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Get one day ago
DateTime oneDayAgo = DateTime.Now.ToLocalTime().AddDays(-1);
String strOneDayAgo = oneDayAgo.ToString();
//Declare the query string
String queryString = "Select * from Computers Where whenCreated >= '" + strOneDayAgo + "' ORDER BY whenCreated DESC";
//Show the query being used to the user
lblQueryUsed.Text = queryString;
// Run the query and bind the resulting DataSet to the GridView control.
DataSet ds = GetData(queryString);
if (ds.Tables.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
}
protected void Label1_PreRender(object sender, EventArgs e)
{
//Populate the labels
lblCompCount.Text = GridView1.Rows.Count.ToString();
lblTimeRun.Text = DateTime.Now.ToLocalTime().ToString();
}
///////////////////////METHODS///////////////////////
DataSet GetData(String queryString)
{
// Set the connection string
SqlConnectionStringBuilder conBuilder = new SqlConnectionStringBuilder();
conBuilder.DataSource = "dbsql01dev.llnl.gov";
conBuilder.InitialCatalog = "XloadDB";
conBuilder.IntegratedSecurity = true;
String connectionString = conBuilder.ConnectionString;
//Declare a new dataset
DataSet ds = new DataSet();
try
{
// Connect to the database and run the query.
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);
// Fill the DataSet.
adapter.Fill(ds);
}
catch(Exception ex)
{
// The connection failed. Display an error message.
lblExceptions.Text = ex.ToString();
lblExceptions.Visible = true;
}
return ds;
}
}
}