2013-03-13 2 views
0

У меня есть приложение, в котором пользователь входит в систему и может редактировать данные своего друга. однако, если пользователь является администратором, он получает gridview со всеми пользовательскими записями, которые он может редактировать. если пользователь не является администратором, он просто получит список, в котором он сможет редактировать свои данные.с использованием переменной session в sql-запросе

Когда пользователь регистрируется на странице, его идентификатор пользователя, который сам по себе также хранится в db, хранится в качестве переменной сеанса в Session ["ID"]. теперь мне нужно заполнить список с данными пользователя. Я думал, что было бы хорошо просто запросить данные на основе параметра Session ["ID"]. но я не уверен, как это сделать.

EDIT:

нормально у меня есть немного кода относительно этого, как я понятия не имею, как это сделать, но я вывешу то, что я есть. первый метод, где я установить переменную сеанса идентификатор пользователя:

  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> 

это код, где я включить 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> 
+0

пожалуйста, напишите код, который вы имеете –

+0

Кроме того, вы используете C# или VB.Net или что? – Melanie

+0

Я использую C# ... – LeonidasFett

ответ

1

вы связывание ListView с SqlDataSource, использование SqlDataSource SelectParameter

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
           ConnectionString="<%$ ConnectionStrings:yourConnection %>" 
           SelectCommand="SELECT * FROM yourTable WHERE userid = @userid"> 
           <SelectParameters> 
            <asp:SessionParameter Name="userid" SessionField="ID" Type="String" /> 
           </SelectParameters> 
          </asp:SqlDataSource> 
1

Для выбора данных из БД можно создать источник данных SQL и связать его с ListView:

SqlDataSource ds = new SqlDataSource(); 

    ds.ConnectionString = yourDBconnectionString; 

    ds.SelectCommand = "SELECT * FROM records_table WHERE [email protected]_id"; 
    ds.SelectParameters.Add("user_id", Convert.ToInt32(Session["id"])); 

    ListView1.DataSource = ds; 
    ListView1.DataBind(); 

Затем привязать поля записей к ListView на странице использования aspx (только пример):

<%# Eval("recort_title") %>