2013-02-19 4 views
0

Привет и спасибо за вашу помощь заранее. Вот моя проблема:Событие нажатия кнопки MasterPage не срабатывает при первом щелчке, но при втором нажатии

  • У меня есть веб-страница, разделенная на MasterPage и главную страницу.
  • Ничто ни на одной странице не настроено динамически (без кода), все установлено на странице .aspx.
  • На MasterPage у меня есть кнопка «Сохранить».
  • На главной странице У меня есть несколько текстовых полей.
  • В текстовых файлах главной страницы есть событие (void SumAll (...)), которое запускается, когда фокус выходит из любого из этих флажков.
  • На MasterPage У меня есть событие click, связанное с кнопкой «Сохранить».

Это то, что happends:

  • я внести изменения в любом из текстовых полей на главной странице, но фокус не выходит из этого текстового поля (нет() события SumAll не fireing сразу) ,
  • Затем я нажимаю кнопку «Сохранить» в MasterPage.

Я ожидаю, что кнопка MasterPage «Сохранить» нажата, чтобы стрелять, но она никогда не делает! Событие изменения главной страницы (SumAll()) срабатывает, но событие щелчка MasterPage не выполняется.

Если я снова нажимаю кнопку «Сохранить» MasterPage, успешно запускается событие щелчка MasterPage, но, конечно же, событие с изменением основной страницы на главной странице. То же самое верно, когда я просто нажимаю кнопку «Сохранить» MasterPage без внесения каких-либо изменений на главной странице.

Вот пример моего кода. Главная страница TextChanged событие:

protected void SumTheAmounts(object sender, EventArgs e) 
    { 
     Decimal lease = 0.00M; 
     Decimal securityDeposit = 0.00M; 
     Decimal miscellanious = 0.00M; 
     Decimal sumTotal = 0.00M; 

     Decimal.TryParse(txtMiscellaneousAmount.Text, out miscellanious); 
     Decimal.TryParse(txtSecurityDepositAmount.Text, out securityDeposit); 
     Decimal.TryParse(txtLeaseAmount.Text, out lease); 

     sumTotal = miscellanious + securityDeposit + lease; 
     txtAmount.Text = sumTotal.ToString(); 

     // Set focus to the next textbox 
     TextBox tb = (TextBox)sender; 
     switch (tb.ID) 
     { 
      case "txtLeaseAmount": 
       txtSecurityDepositAmount.Focus(); 
       break; 
      case "txtSecurityDepositAmount": 
       txtMiscellaneousAmount.Focus(); 
       break; 
      case "txtMiscellaneousAmount": 
       txtMiscellaneousAmount.Focus(); // Send back to the same. . 
       break; 
      default: 
       break; 
     } 
    } 

И мой Masterpage в "Сохранить" нажатие кнопки событие:

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     // Save every little thing... 
     switch (ContentPageLoaded) 
     { 
      case "CheckRequest": 
       ((CheckRequest)ContentMain.Page).UpdateMe(); 
       break; 
      case "PicturesLoad": 
       ((PicturesLoad)ContentMain.Page).UpdateMe(); 
       break; 
      default: 
       break; 
     } 
    } 

Markup:

<asp:Panel ID="pnlSave" CssClass="ButtonClass" runat="server"> 
    <asp:Button ID="btnSave" style="width:160px; font-size:small; position:relative; color:Blue; top: 0px; left: 0px;" runat="server" Text="Save" onclick="btnSave_Click" CausesValidation="False" /> 
</asp:Panel> 

PageLoad:

if (!IsPostBack) 
{ 
    Button saveButton = (Button)Master.FindControl("btnSave"); 
    branchName = (string)Session["BranchName"]; 
    branchLegalData = new Classes.BranchLegalData(); 
    if ((branchName != null) && (branchName.Length > 0)) 
    { 
     FillThisPageData(); 
    } 
} 
else { } 
Master.ContentPageLoaded = "CheckRequest"; 

Любая помощь очень ценится! Спасибо

+0

Можете ли вы показать нам разметку для кнопки сохранения на главной странице? Можем ли мы также увидеть любой код, который у вас есть в page_load для любой страницы? –

+0

page_load для MasterPage позволяет только кнопки на MasterPage, так что это не имеет смысла. Кнопка «Сохранить» всегда включена. – stevekershaw

+0

Пожалуйста, введите код в исходный вопрос, а не комментарии. На этот раз я сделал это для вас. –

ответ

1

Это выстрел в темноте, но попробуйте установить autopostback = "false" для всех ваших текстовых полей. Я подозреваю, что может случиться, что вы стреляете в два почтовых сообщения, когда оставляете фокус на своих текстовых окнах, а затем одним нажатием кнопки нажимаете кнопку.

Это произойдет, только если у вас есть автоповтор, установленный в true.

0

Спасибо всем!

установка autopostback = "false" в обработанных текстовых ящиках! Я думаю, что происходило то, что с помощью autopostback = "true" текстовое поле запускало бы собственное текстовое событие, и по какой-то причине событие с нажатием кнопки MasterPage не срабатывало после этого ?! Может кто-нибудь, пожалуйста, скажите мне, почему событие текстового поля срабатывает, а не событие кнопки?

В любом случае, эта проблема исправлена, и я ценю весь вход ... Вы, ребята, ROCK!

Steve

+0

Рад, что все получилось. Если вы чувствуете, что мой ответ решил вашу проблему, не стесняйтесь принять его, нажав на флажок в верхнем левом углу моего ответа. Причина, по которой вы наблюдаете это поведение, заключается в том, что вы можете только один раз отправлять по одному сообщению. Вы пытались сделать два, но второй не делал этого. –