【问题标题】:Page_Load run Button_ClickPage_Load 运行 Button_Click
【发布时间】:2016-07-19 18:24:51
【问题描述】:

我在 SharePoint 2013 中有一个 Web 部件,它从 excel 中添加新项目。 Web 部分包含上传控件、按钮和文本框。我从上传控件中选择文档并单击按钮以在 SP 中加载项目,如果成功,我会在文本框中看到“Successfull”或以另一种方式看到“Not successfull”。

我的问题:如果我用 web-part 刷新页面,文本框仍然包含旧文本,但我希望在每次刷新后看到它为空。

我尝试使用 Page.IsPostBack,但我认为我没有正确使用它。

protected void Page_Load(object sender, EventArgs e)
{
   if(!Page.IsPostBack)
    textbox1.Text = "";
}

protected void btn3_Click(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
        return;
    if(!upload.HasFile)
    {
        textbox1.Text += "You didn't choose an Excel file";
        return;
    }
       ...
}

<asp:Button ID="btn3" runat="server" OnClick="btn3_Click" Text="Add Items" />

【问题讨论】:

  • 我不是通过代码刷新页面,而是使用互联网浏览器。
  • if(!Page.IsPostBack) 将完全阻止这种情况 - 它确保仅在第一页加载时为文本框分配空字符串,而不是在刷新时。如果您想要相反的行为,为什么要使用它?
  • 我使用 Page.IsPostBack == false 因为据我了解,这意味着它不是客户端 - 服务器答案。并且页面的刷新不需要服务器应答。
  • 不,IsPostBack 意味着不同的东西。它表明您是在页面的第一次加载还是在用户进行一些交互后的后续加载
  • 并且浏览器会在刷新时再次请求服务器,详情见this thread

标签: c# asp.net sharepoint


【解决方案1】:

在这种情况下,您可以实现一个特殊的代码块来检测浏览器刷新为

private bool refreshState;
private bool isRefresh;

protected override void LoadViewState(object savedState)
{
    object[] AllStates = (object[])savedState;
    base.LoadViewState(AllStates[0]);
    refreshState = bool.Parse(AllStates[1].ToString());
    if (Session["ISREFRESH"] != null && Session["ISREFRESH"] != "")
        isRefresh = (refreshState == (bool)Session["ISREFRESH"]);
}

protected override object SaveViewState()
{
    Session["ISREFRESH"] = refreshState;
    object[] AllStates = new object[3];
    AllStates[0] = base.SaveViewState();
    AllStates[1] = !(refreshState);
    return AllStates;
}

在按钮点击你可以这样做

protected void btn3_Click(object sender, EventArgs e)
{
    if (isRefresh == false)
        {
            Insert Code here
        }
}

【讨论】:

  • 我有一个例外,我应该在配置文件中设置 enableSessionState = true 或使用页面指令。我无法编辑配置文件然后我在我的 .ascx 文件中添加 并有另一个例外:未知指令“page”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多