2012-04-06 4 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Text; 
using System.Web.Services; 
using System.IO; 

namespace T_Smade 
{ 

    public partial class ConferenceManagement : System.Web.UI.Page 
    { 
     volatile int i = 0; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      GetSessionList(); 
     } 


     public void GetSessionList() 
     { 
      string secondResult = ""; 
      string userName = ""; 

      try 
      { 
       if (HttpContext.Current.User.Identity.IsAuthenticated) 
       { 
        userName = HttpContext.Current.User.Identity.Name; 
       } 

       SqlConnection thisConnection = new SqlConnection(@"data Source=ZOLA-PC;AttachDbFilename=D:\2\5.Devp\my DB\ASPNETDB.MDF;Integrated Security=True"); 
       thisConnection.Open(); 

       SqlCommand secondCommand = thisConnection.CreateCommand(); 
       secondCommand.CommandText = "SELECT myApp_Session.session_id FROM myApp_Session, myApp_Role_in_Session where myApp_Role_in_Session.user_name='" + userName + "' and myApp_Role_in_Session.session_id=myApp_Session.session_id"; 
       SqlDataReader secondReader = secondCommand.ExecuteReader(); 

       while (secondReader.Read()) 
       { 
        secondResult = secondResult + secondReader["session_id"].ToString() + ";"; 
       } 
       secondReader.Close(); 

       SqlCommand thisCommand = thisConnection.CreateCommand(); 
       thisCommand.CommandText = "SELECT * FROM myApp_Session;"; 
       SqlDataReader thisReader = thisCommand.ExecuteReader(); 

       while (thisReader.Read()) 
       { 
        test.Controls.Add(GetLabel(thisReader["session_id"].ToString(), thisReader["session_name"].ToString())); 
        string[] compare = secondResult.Split(';'); 
        foreach (string word in compare) 
        { 
         if (word == thisReader["session_id"].ToString()) 
         { 
          test.Controls.Add(GetButton(thisReader["session_id"].ToString(), "Join Session")); 
         } 
        } 
       } 
       thisReader.Close(); 
       thisConnection.Close(); 

      } 
      catch (SqlException ex) 
      { 

      } 
     } 

     private Button GetButton(string id, string name) 
     { 
      Button b = new Button(); 
      b.Text = name; 
      b.ID = "Button_" + id + i; 
      b.Command += new CommandEventHandler(Button_Click); 
      b.CommandArgument = id; 
      i++; 
      return b; 
     } 

     private Label GetLabel(string id, string name) 
     { 
      Label tb = new Label(); 
      tb.Text = name; 
      tb.ID = id; 
      return tb; 
     } 

     protected void Button_Click(object sender, CommandEventArgs e) 
     { 
      Response.Redirect("EnterSession.aspx?session=" + e.CommandArgument.ToString()); 
     } 
    } 

, когда пользователи нажимают на этой странице следующая страница генерируется вasp.net поколения URL

www.mypage/Entersession.aspx? Сессии = session_id

, но я предпочел бы, чтобы его как

www.mypage/Entersession.aspx? сессия = session_name

как session_id и session_name взяты из базы данных

любая идея?

} 
+0

Итак, вы хотите изменить свой 'CommandArgument'? – jrummell

ответ

1

Просто измените

test.Controls.Add(GetButton(thisReader["session_id"].ToString(), "Join Session")); 

в

test.Controls.Add(GetButton(thisReader["session_name"].ToString(), "Join Session")); 
+0

Я пробовал все еще, я получил идентификатор, прикрепленный к URL-адресу – buni

1

Это вы, тем что ищете? Меняя CommandArgument? Это очень и очень простое решение.

Update

Вы можете добавить параметр commandArgument в GetButton().

private Button GetButton(string id, string name, string commandArgument) 
    { 
     Button b = new Button(); 
     b.Text = name; 
     b.ID = "Button_" + id + i; 
     b.Command += new CommandEventHandler(Button_Click); 
     b.CommandArgument = commandArgument; // this changed to commandArgument 
     i++; 
     return b; 
    } 

    GetButton(thisReader["session_id"].ToString(), "Join Session", thisReader["session_name"].ToString()) 
+0

Это приведет к тому, что «Join Session» всегда будет CommandArgument. – Khan

+0

Да, будет. Я обновил свой ответ. – jrummell

+0

Отсутствие перегрузки для кнопки get get метода принимает 2 аргумента. это то, что я получил как ошибку – buni

1

Изменение вы ищете имеет место в том, где вы используете ваш метод GetButton

Изменение:

test.Controls.Add(GetButton(thisReader["session_id"].ToString(), "Join Session")); 

To:

test.Controls.Add(GetButton(thisReader["session_name"].ToString(), "Join Session")); 

Ваш первый входной параметр для GetButton в настоящее время отображается на CommandArgument. Итак, прохождение session_name вместо session_id сделает трюк.

+0

Я пробовал все еще, я получил идентификатор, прикрепленный к URL-адресу – buni

+0

Правильно ли отображается ваша метка session_name? – Khan

+0

да, это показывает – buni