2014-02-19 44 views
0

我必須單擊linkbutton兩次以更改頁面並加載當前文件夾的子文件夾。我認爲我的會話和事件有一些問題。我必須單擊兩次鏈接按鈕才能更改頁面

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 

      TableRow r = new TableRow(); 
      TableCell c1 = new TableCell(); 
      LinkButton l = new LinkButton(); 
      var strarray = Server.MapPath(Session["url"].ToString()).Split(Path.DirectorySeparatorChar); 
      Table table = new Table(); 
      l.ID = "lable" + table.Rows.Count; 
      l.Text = strarray.Last(); 
      l.EnableViewState = true; 
      r.ID = "newRow" + table.Rows.Count; 
      c1.ID = "newC1" + table.Rows.Count; 
      c1.Controls.Add(l); 
      r.Cells.Add(c1); 
      table.Rows.Add(r); 
      this.form1.Controls.Add(table); 
     } 
     else 
     { 
      if(Directory.Exists(Server.MapPath(Session["url"].ToString()))) 
      { 
       string[] allFolders = Directory.GetDirectories(Server.MapPath(Session["url"].ToString())); 
       Table table = new Table(); 
       foreach (string str in allFolders) 
       { 
        TableRow r = new TableRow(); 
        TableCell c1 = new TableCell(); 
        LinkButton l = new LinkButton(); 
        var strarray = str.Split(Path.DirectorySeparatorChar); 
        l.ID = strarray.Last(); 
        l.CommandName = "createLink"; 
        l.Click+= new EventHandler(LinkButton_Command); 
        l.Text = strarray.Last(); 
        l.EnableViewState = true;     
        r.ID = "newRow" + table.Rows.Count; 
        c1.ID = "newC1" + table.Rows.Count; 
        c1.Controls.Add(l); 
        r.Cells.Add(c1); 
        table.Rows.Add(r); 
        this.form1.Controls.Add(table); 
       } 
      } 
      else 
      { 
       Work work=new Work(); 
       work.SetFolder(Session["url"].ToString()); 
       work.CreateFolder(); 
      } 
     } 
    } 

    public void LinkButton_Command(object sender, EventArgs e) 
    { 
     Session["url"] = Session["url"] + "\\" + ((LinkButton)sender).ID; 
    } 

回答

0

我想這是因爲Page_Load()方法是LinkButton_Command()之前調用。當執行Page_Load()中的代碼時,會話變量Session["url"]仍包含以前的值。

嘗試將Page_Load()的else分支中的代碼移到LinkButton_Command()的末尾。

+0

我需要在每一個頁面加載檢查會話加載目錄。我認爲這不是我的問題 –

0

混淆你的答案和我的程序後,來找到一個可行的答案。

保護無效的Page_Load(對象發件人,EventArgs的) { 如果(Directory.Exists(使用Server.Mappath(會話[ 「URL」]。的ToString()))) { 串[] =所有文件夾的目錄。 GetDirectories(使用Server.Mappath(會話[ 「URL」]的ToString())。); Table table = new Table(); foreach(所有文件夾中的字符串str) TableRow r = new TableRow(); TableCell c1 = new TableCell(); LinkBut​​ton l = new LinkBut​​ton(); var strarray = str.Split(Path.DirectorySeparatorChar); l.ID = strarray.Last(); l.CommandName =「createLink」; l.Click + = new EventHandler(LinkBut​​ton_Command); l.Text = strarray.Last(); l.EnableViewState = true; r.ID =「newRow」+ table.Rows.Count; c1.ID =「newC1」+ table.Rows.Count; c1.Controls.Add(l); c1.Controls.Add(l); r.Cells.Add(c1); table.Rows.Add(r); this.form1.Controls.Clear(); this.form1.Controls.Add(table); }}

} 
    public void LinkButton_Command(object sender, EventArgs e) 
    { 
     Session["url"] = Session["url"] + "\\" + ((LinkButton)sender).ID; 

     if (Directory.Exists(Server.MapPath(Session["url"].ToString()))) 
     { 
      string[] allFolders = Directory.GetDirectories(Server.MapPath(Session["url"].ToString())); 
      Table table = new Table(); 
      foreach (string str in allFolders) 
      { 
       TableRow r = new TableRow(); 
       TableCell c1 = new TableCell(); 
       LinkButton l = new LinkButton(); 
       var strarray = str.Split(Path.DirectorySeparatorChar); 
       l.ID = strarray.Last(); 
       l.CommandName = "createLink"; 
       l.Click += new EventHandler(LinkButton_Command); 
       l.Text = strarray.Last(); 
       l.EnableViewState = true; 
       r.ID = "newRow" + table.Rows.Count; 
       c1.ID = "newC1" + table.Rows.Count; 
       c1.Controls.Add(l); 
       r.Cells.Add(c1); 
       table.Rows.Add(r); 
       this.form1.Controls.Clear(); 
       this.form1.Controls.Add(table); 
      } 
     } 

    } 
相關問題