2013-01-17 78 views
0

嗨Stackoverflow社區! 我正在使用Visual Studio 2012和Windows Server 2012開發Sharepoint 2013服務器。所以,我必須構建一個Web部分,它應該通過文本框向GUI添加鏈接。此外,還應該添加另一個鏈接。添加新鏈接後,整個鏈接集應顯示在列表中。現在的問題是:添加鏈接後,網站重新加載。因此,存儲鏈接的數組只包含最新的鏈接。所有以前的鏈接都已經消失/刪除。動態添加鏈接到sharepoint webpart

下面是關於這個我的方法:

protected void Page_Load(object sender, EventArgs e) { 
     if (Page.IsPostBack) { 
      Events = new List<String>(); 
     } 
    } 

    protected void btnAddLink_click(object sender, EventArgs e) { 
     AddToList(); 
     List<String> links = Events; 
     foreach (String s in links) { 
      HyperLink link = new HyperLink(); 
      link.NavigateUrl = s; 
      link.Text = s; 
      lnkPanel.Controls.Add(link); 
     } 
     foreach (String l in links) { 
      tbDescription.Text += l + "\n"; 
     } 
    } 

    public List<String> Events { 
     get { return (List<String>)ViewState["HyperLinkList"]; } 
     set { ViewState["HyperLinkList"] = value; } 
    } 

    public void AddToList() { 
     List<String> events = Events; // Get it out of the viewstate 
     String l = tbLinks.Text; // tb = textbox (user input) 
     HyperLink link = new HyperLink(); 
     link.NavigateUrl = tbLinks.Text; 
     link.Text = tbLinks.Text; 
     if (!events.Contains(link.NavigateUrl.ToString())) { 
      events.Add(l); 
     } 
     Events = events; // Add the updated list back into the viewstate 

    } 

我希望有人能幫助我與我(也許nooby)的問題。

+1

這是脫離主題,但爲什麼你需要'((頁)System.Web.HttpContext.Current.CurrentHandler).IsPostBack'不是'Page.IsPostback'存在?簡單得多。 –

+0

啊,是的,謝謝:) –

回答

2

唉唉,你需要這樣的:

protected void Page_Load(object sender, EventArgs e) { 
    if (!Page.IsPostBack) { 
     Events = new List<String>(); 
    } 
} 

每個頁面加載時間,你抹在視圖狀態列表中的內容。您需要添加!以確保它不是回發。

+0

最後,非常感謝。 –