2013-08-21 18 views
1

我有一個文件上傳控制器到FTP服務器。我想檢索每個上傳文件的文件名,並希望將其作爲鏈接按鈕顯示在同一頁面上。所以我想動態地添加linkbuttons到頁面。我已經這樣做了。但是當上傳多個文件時,它會替換之前添加的鏈接,並且只會將最後添加的文件顯示爲鏈接按鈕。如何點擊上傳控制器的按鈕動態添加多個鏈接按鈕?

protected void UploadButton_Click(object sender, EventArgs e) 
{ 
    string filename = Path.GetFileName(FileUploadControl.FileName); 
    Session["f_name"] = filename; 


    Panel1.Controls.Add(new LiteralControl("<div>")); 
    LinkButton lb = new LinkButton(); 
    lb.Text = filename; 
    lb.ID = filename; 
    Session["lb_pdf"]=lb.Text; 
    string pdf=(string)Session["lb_pdf"]; 
    Panel1.Controls.Add(lb); 
    Panel1.Controls.Add(new LiteralControl("</div>")); 
    lb.PostBackUrl = "Default2.aspx"; 

如何動態添加多個linkbuttons?請幫助

回答

1

你可以使用一個List<string>,而不是一個字符串:

List<string> allFiles = new List<string>(); 
if(Session["f_name"] != null) 
    allFiles = (List<string>)Session["f_name"]; 
else 
    Session["f_name"] = allFiles; 

allFiles.Add(filename); 

foreach(string fileName in allFiles) 
{ 
    // now create the LinkButtons ... 
} 

請注意,您必須重新創建在每次回傳的所有動態創建的控件。因此,如果您可以在不使用UploadButton的情況下從本頁回發,則應該使用Page_InitPage_Load來重新創建舊的LinkButtons。這也是生命週期中更好的地方。

參見:TRULY UNDERSTANDING DYNAMIC CONTROLS (Adding Dynamic Controls to the Control Tree)

+0

它示出了在allFiles =(列表)錯誤會話[ 「f_name」];無法將類型爲'System.String'的對象轉換爲鍵入'System.Collections.Generic.List'1 [System.String]'。 @Tim Schmelter – ARATHY

+0

@ARATHY:是的,因爲你還添加了一個字符串,而不是一個列表。你在哪裏設置這個會話值,只在這裏? –

相關問題