2015-08-25 2 views
1

У меня есть две панели. Каждая панель содержит панель обновления. Первой панелью является текстовое поле пароля.UpdatePanel и видимость панели asp.net C#

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

Код:

<asp:Panel ID="passwordPanel" runat="server"> 
     <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server"> 
     <ContentTemplate> 
      Geben Sie das Passwort ein:<br /> 
      <br /> 
      <asp:TextBox ID="txtPassword" AutoPostBack="false" runat="server" TextMode="Password"></asp:TextBox> 
      <br /> 
      <br /> 
      <asp:Button ID="btnConfirmPassword" runat="server" AutoPostBack="true" Text="Senden" CssClass="button" OnClick="btnConfirmPassword_Click"/> 
     </ContentTemplate> 
     </asp:UpdatePanel> 
    </asp:Panel> 



    <asp:Panel ID="panelUploadDownload" runat="server"> 
    <h2>Upload Paketformeln CSV</h2> 

    <input type="file" id="myFile" name="myFile" /> 

    <asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" CssClass="button" Text="Upload" /> 
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
     <ContentTemplate> 
      <br /> 
      <asp:Label ID="lblStatus" runat="server" Text="statusLabel"></asp:Label> 
      <br /> 

      <asp:Panel ID="panelChanges" runat="server" CssClass="pnlCSS"> 
       <asp:Label ID="lblChangesHeader" runat="server" Font-Bold="True" ForeColor="Black" Text="Änderungen"></asp:Label> 
       <br /> 
       <asp:Label ID="lblChanges" runat="server" ForeColor="#009900" Text="changes"></asp:Label> 
       <br /> 
       <br /> 
       <asp:Button ID="btnConfirm" runat="server" OnClick="btnConfirm_Click" CSSClass="button" Text="Änderungen bestätigen" /> 
      </asp:Panel> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <br /> 
    <br /> 
    <br /> 
    <br /> 
     <h2>Download Paketformeln CSV</h2> 
    <p><asp:Button ID="btnDownloadCsv" runat="server" OnClick="btnDownloadCsv_Click" Text="Download CSV" CSSClass="button"/></p> 
    </asp:Panel> 

И код C#:

protected void btnConfirmPassword_Click(object sender, EventArgs e) 
     { 
      if (txtPassword.Text == "XX") 
      { 
       uploadDownloadPanel.Visible = true; 
       passwordPanel.Visible = false; 
      } 
     } 

Load Event

protected void Page_Load(object sender, EventArgs e) 
    { 
     mainController = new MainController(); 
     setStatus("", Color.Black); 
     lblChanges.Visible = false; 
     lblChangesHeader.Visible = false; 
     btnConfirm.Visible = false; 
     panelChanges.Visible = false; 
     panelUploadDownload.Visible = false; 


    } 

По какой-то причине он не работает. Любые подсказки? Триггеры?

+0

Что именно не работает? Видимость панелей, кнопка не срабатывает и т. Д. Добавьте некоторые точки останова и отлаживайте событие btnConfirmPassword_Click, чтобы увидеть, не срабатывает ли он – DieVeenman

+0

Покажите свое событие загрузки – Lali

+0

, событие срабатывает, но оно ничего не меняет. если я снова нажму кнопку, я получу ошибку: неверный аргумент обратной передачи или обратного вызова. –

ответ

1

Я только что удалил обновленную панель с паролем, и это сработало.

1

Класс SecureString не позволяет увидеть значение; в этом весь смысл. Если вы хотите, чтобы иметь возможность работать с значением, введенным в PasswordBox, используйте элемент ПАРОЛЬ PasswordBox вместо члена SecurePassword:

protected void btnConfirmPassword_Click(object sender, EventArgs e) 
     { 
      if (txtPassword.Password == "XX") 
      { 
       uploadDownloadPanel.Visible = true; 
       passwordPanel.Visible = false; 
      } 
     } 
+0

, что не было проблемой. событие срабатывает правильно, и я вижу значение. но он ничего не делает –

+0

Тогда это ваша обратная ошибка, nevermind Я отредактирую его – DieVeenman

0

В вашем случае нагрузки, выполните следующие действия

if(IsPostback) 
{ 
    uploadDownloadPanel.Visible = false; 
} 

На самом деле, каждый раз, когда вы нажимаете кнопку, вы также запускаете событие события.

+0

не помогло, но спасибо. panelPassword не исчезает –

0

Вы можете установить ваш UpdateMode к Всегда панели обновления в panelUploadDownload panel.It будет работать.

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Always" runat="server">