2016-03-31 6 views
0

У меня есть веб-часть в SharePoint 2013, которая добавляет новые элементы из excel. Веб-часть содержит элементы управления загрузкой, кнопки и текстовое поле. Я выбираю документ из элемента управления загрузкой и нажимаю кнопку для загрузки элементов в SP, если он был успешным, я вижу «Successfull» в текстовом поле или «Неудачно» по-другому.Page_Load run Button_Click

Моя проблема: Если я обновляю страницу с помощью веб-части, текстовое поле по-прежнему содержит старый текст, но я хочу видеть его пустым после каждого обновления.

Я пытаюсь использовать 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" /> 
+0

Я обновить страницу не по коду, используя интернет-браузер. –

+0

'if (! Page.IsPostBack)' будет предотвращать именно это - он гарантирует, что текстовому поле назначается пустая строка только при загрузке первой страницы, а не в обновлениях. Почему вы используете его, если хотите противоположного поведения? – Andrei

+0

Я использую Page.IsPostBack == false, потому что, как я понимаю, это означает, что это не клиент-серверный ответ. И обновление страницы не требует ответа сервера. –

ответ

0

В таком случае, вы можете реализовать специальный блок кода для обнаружения обновления браузера, как

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 
     } 
} 
+0

У меня есть исключение, что я должен установить enableSessionState = true в файле конфигурации или с помощью директивы page. Я не могу редактировать файл конфигурации, тогда я добавляю <% @ Page Language = "C#" enableSessionState = "true"%> в мой .ascx-файл и имею другое исключение: неизвестная директива "страница" –

Смежные вопросы