空のグリッドビューを作成し、sqldatasource を作成しました。select ステートメントは次のとおりです。
SELECT S.[ID], S.[Survey_Name], S.[Start_Date], S.[End_Date], C.[Category_Name], S.[Username], S.[Audience] FROM [Survey] S
Inner Join
Category C On S.Category_ID = C.ID Where Username = @Username
その後、パラメーターのソースを「セッション」として選択し、そのセッション フィールドを「ユーザー名」として選択すると、このセッションはログイン時に入力されます。テストしてユーザー名を入力すると機能しますが、プログラムを実行すると、グリッドビューは常に空白になります。
編集: 私の aspx.page コード。
<asp:SqlDataSource
ID="SqlDataSource1"
Runat="server"
SelectCommand="SELECT S.[ID], S.[Survey_Name], S.[Start_Date],
S.[End_Date], C.[Category_Name], S.[Username], S.[Audience]
FROM [Survey] S Inner Join Category C
On S.Category_ID = C.ID Where Username = @Username"
SelectCommandType="Text"
ConnectionString="<%$ ConnectionStrings:SurveySystemConnectionString %>">
<SelectParameters>
<asp:SessionParameter Name="Username" DbType="String"
DefaultValue="" SessionField="username"/>
</SelectParameters>
</asp:SqlDataSource>
編集:私のログインボタン
protected void LoginButton_Click(object sender, EventArgs e)
{
lblerror.Visible = false;
SqlConnection conn = DatabaseConnection.GetSurveySystemConnection();
string queryString = "SELECT * FROM [Users] WHERE Username=@username AND Password= @password";
SqlCommand command = new SqlCommand(queryString, conn);
command.Parameters.AddWithValue("@username", UserNameTextBox.Text);
command.Parameters.AddWithValue("@password", PasswordTextBox.Text);
SqlDataReader reader = null;
reader = command.ExecuteReader();
if (reader.Read())
{
Session["Username"] = UserNameTextBox.Text;
Session["Name"] = (string)reader["name"];
Session["UserType"] = (string)reader["UserType"];
Response.Redirect("Home.aspx");
}
Connection.close();
}