ユーザーがログインして自分のデータを編集できるアプリケーションがあります。ただし、ユーザーが管理者の場合、編集可能なすべてのユーザーのレコードを含むグリッドビューを取得します。ユーザーが管理者でない場合は、自分のデータを編集できるリストビューが表示されます。
ユーザーがページにログインすると、それ自体もデータベースに保存されているユーザーIDが、Session["ID"]のセッション変数として保存されます。次に、リストビューにユーザーのデータを入力する必要があります。Session["ID"]パラメータに基づいてデータをクエリするだけでよいと思いました。しかし、私はこれを行う方法がわかりません。
編集:
わかりました。方法がわからないため、これに関するコードはほとんどありませんが、持っているものを投稿します。最初は、ユーザーIDのセッション変数を設定する方法です。
objda = new SqlDataAdapter("[GetIDOfUser]", objcon);
objda.SelectCommand.CommandType = CommandType.StoredProcedure;
objda.SelectCommand.Parameters.Add("@Username", SqlDbType.VarChar).Value = tbUsername.Text;
objda.SelectCommand.Parameters.Add("@UserPassword", SqlDbType.VarChar).Value = tbPassword.Text;
String id = (string)objda.SelectCommand.ExecuteScalar();
Session["ID"] = id;
これは私のマークアップです:
<asp:ListView ID="ListView1" Visible="False" runat="server" DataSourceID="SqlDataSource2"></asp:ListView>
これは、リストビューを有効にするコードです。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserAuthentication"] == null)
{
Response.Redirect("Login.aspx");
}
if (Session["Benutzerart"].ToString() == Enums.Enumerations.Benutzer.Administrator.ToString())
{
GridView1.Visible = true;
//Set controls for admin
}
if (Session["Benutzerart"].ToString() != Enums.Enumerations.Benutzer.Administrator.ToString())
{
ListView1.Visible = true;
//Set controls for other users
}
}
わかりました、私はそれを理解しました:
上記のコードのように、通常のリストビューを作成します。データソースのみがマークアップにselectcommand属性を持っていません。この属性はコード内で設定されます:
if (Session["Benutzerart"].ToString() != Enums.Enumerations.Benutzer.Administrator.ToString())
{
ListView1.Visible = true;
SqlDataSource2.SelectCommand = "SELECT [Titel], [Bezeichnung], [Vorname], [Nachname], [Geburtsdatum], [Geburtsort], [Straße], [Nationalität], [Hausnummer], [PLZ], [Ort], [Land], [Mobil], [UrlaubstageGenommen], [UrlaubstageInsgesamt], [Status], [Benutzerart], [Homepage], [Email], [Festnetz], [Fax], [UrlaubstageRest], [Username], [UserPassword] FROM [Benutzer] WHERE [BenutzerID] = '" + Session["ID"] + "'";
}
データソースのマークアップ:
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ></asp:SqlDataSource>