2016-02-01 7 views
0

У меня есть это, но он не работает ... я что-то пропустил?Изменить UpdateProgress текст при нажатии кнопки

Мне нужно изменить текст с помощью UpdateProgess, например, при нажатии кнопки.

Это мой ascx:

<asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="upFormulario"> 
    <ProgressTemplate> 
     <div style="position: fixed; text-align: center; height: 100%; width: 100%; top: 0; right: 0; left: 0; z-index: 9999999; background-color: #000000; opacity: 0.7;"> 
      <%--<span id="lblInfo" style="border-width: 0px; position: fixed; padding: 50px; background-color: #FFFFFF; font-size: 36px; left: 40%; top: 40%;">Loading...</span>--%> 
      <asp:Label id="lblInfo" Text="..." runat="server" style="border-width: 0px; position: fixed; padding: 50px; background-color: #FFFFFF; font-size: 36px; left: 40%; top: 40%;" /> 
     </div> 
    </ProgressTemplate> 
</asp:UpdateProgress> 

<asp:UpdatePanel ID="upFormulario" runat="server"> 
... 
<table width="100%" cellspacing="0" cellpadding="0"> 
    <tbody> 
    <tr> 
     <td width="100%" align="right" nowrap="nowrap"> 
     <asp:Button runat="server" Text="Next" ID="btnSave" OnClick="cmdSaveDraft_Click" class="ms-ButtonHeightWidth" /> 
     </td> 
    </tr> 
    </tbody> 
</table> 
... 
</asp:UpdatePanel> 

Это мой код на ascx.cs

protected void cmdSaveDraft_Click(object sender, EventArgs e) 
{ 
    Label progressMessageLabel = this.UpdateProgress2.FindControl("lblInfo") as Label; 
    if (progressMessageLabel != null) 
    { 
     progressMessageLabel.Text = "Saving..."; 
    } 
    lblAccion = "Loading..."; 

    int iControl = this.ValidateCtrl(); 
    if (iControl == 1) 
    { 
     return; 
    } 
} 

спасибо!

+0

Какая ошибка вы получаете? Где указано cmdSaveDraft_Click в вашем представлении? Я думаю, что ваш вопрос нуждается в более подробных деталях. –

+0

ошибки нет, мне нужно изменить текст в ярлыке lblInfo при нажатии кнопки. Очевидно, что cmdSaveDraft_Click указан в панели обновления. –

+0

Вы говорите «очевидно», но я не вижу код ... –

ответ

1

Ваш UpdateProgress находится вне UpdatePanel, но ваша кнопка находится внутри панели обновления.

Когда вы используете панель обновления, все элементы управления внутри панель обновления будет работать в ajax, они не будут выполнять реальный пост, кроме запроса ajax. В этом случае только элементы управления внутри панели обновления могут обновляться из событий, запущенных из элементов управления внутри панели обновления.

Возобновление, если вы хотите, чтобы оно работало, добавьте контроль прогресса обновления внутри панели обновления, и он будет работать.

+0

о, да! это была проблема !! Спасибо!! –

0

Если нажатая кнопка имеет включенную запись, я бы подумал, что этикетка будет отражать изменения текста при следующем обновлении страницы. (Код клика кнопки запускается на сервере, а не на клиенте, поэтому для загрузки нового содержимого метки требуется, чтобы страница отображала новое состояние метки)

Если вы хотите, чтобы текст на этикетке менялся без обновления, вам необходимо используйте Javascript.

string script = "<script type=\"text/javascript\"> document.getElementById("LABEL").text = 'Loading...'; </script>"; 
ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", script); 

Я не проверял, но теоретически это должно позволить вам изменить значение метки, без необходимости размещать на этой странице. Примечание. Возможно, вам придется отключить пост управления. Не уверен.

+0

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

0

Может this answer может помочь:

public void bw_Convert_DoWork(object sender, DoWorkEventArgs e) 
{   
    e.Result = e.Argument; 
    for (int i = 0; i < fTable.Rows.Count; i++) 
    { 
     try 
     { 
      SqlCommand cmd = new SqlCommand("INSERT INTO TBL_CDR_ANALYZER (LNG_UPLOAD_ID, DAT_START, LNG_DURATION, INT_DIRECTION, INT_CALL_DATA_TYPE, \n" + 
       "TXT_TARGET_NUMBER, TXT_OTHER_PARTY_NUMBER, TXT_TARGET_IMSI, TXT_TARGET_IMEI, TXT_TARGET_CELL_ID, TXT_ROAMING_NETWORK_COMPANY_NAME) VALUES \n" + 
       "(@UPLOAD_ID, @START_DATE, @DURATION, @DIRECTION, @CALL_TYPE, @TARGET_NUMBER, @OTHER_PARTY_NUMBER, @IMSI, @IMEI, @CELL_ID, @ROAMING_NAME)", sqlCon); 
      cmd.Parameters.Add("@UPLOAD_ID", SqlDbType.Int).Value = 1; 
      cmd.Parameters.Add("@START_DATE", SqlDbType.DateTime).Value = fTable.Rows[i]["CallDate"]; 
      cmd.Parameters.Add("@DURATION", SqlDbType.Int).Value = fTable.Rows[i]["CallDuration"]; 
      cmd.Parameters.Add("@DIRECTION", SqlDbType.Int).Value = GetCallDirection(fTable.Rows[i]["CallDirection"].ToString()); 
      cmd.Parameters.Add("@CALL_TYPE", SqlDbType.Int).Value = GetCallType(fTable.Rows[i]["CallType"].ToString()); 
      cmd.Parameters.Add("@TARGET_NUMBER", SqlDbType.VarChar, 25).Value = fTable.Rows[i]["TargetNo"]; 
      cmd.Parameters.Add("@OTHER_PARTY_NUMBER", SqlDbType.VarChar, 25).Value = fTable.Rows[i]["OtherPartyNo"]; 
      cmd.Parameters.Add("@IMSI", SqlDbType.VarChar, 50).Value = fTable.Rows[i]["IMSI"]; 
      cmd.Parameters.Add("@IMEI", SqlDbType.VarChar, 50).Value = fTable.Rows[i]["IMEI"]; 
      cmd.Parameters.Add("@CELL_ID", SqlDbType.VarChar, 50).Value = fTable.Rows[i]["CellID"]; 
      cmd.Parameters.Add("@ROAMING_NAME", SqlDbType.NVarChar, 255).Value = fTable.Rows[i]["RoamingCompany"]; 
      sqlCon.Open(); 
      cmd.ExecuteNonQuery(); 
      sqlCon.Close(); 
     } 
     catch (SqlException ex) 
     { 

     } 
     finally 
     { 
      sqlCon.Close(); 
     } 
     bw_Convert.ReportProgress((100 * i)/fTable.Rows.Count); 
     Label1.Invoke((MethodInvoker)delegate { 
     Label1.Text = i.ToString() + "Files Converted";});     
    }  
} 
Смежные вопросы