2013-01-17 47 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

最后,非常感谢。 –