2016-07-30 8 views
0

Verzeihen Sie, aber ich bin immer noch neu in der ganzen Programmierung und konnte keine spezifischere/einfachere Antwort auf meine Anfrage finden.Problem mit deaktivierten Textfeldern, die beim Senden des Formulars wieder aktiviert werden

Ich habe ein Formular, das ich in asp.net C# erstellt habe, die Daten aus einer Datenbank bezieht. Eine gespeicherte Prozedur wird ausgeführt und füllt automatisch eine Reihe von Textfeldern auf, wenn sie etwas findet - den Namen, die E-Mail-Adresse, die Telefonnummer usw. eines Benutzers. Ausgeblendete Felder sind dann deaktiviert, sodass der Benutzer nicht ändern kann, was übertragen wurde. Leere Felder bleiben aktiviert, damit der Benutzer sie bei Bedarf vervollständigen kann.

Wenn der Benutzer jedoch das Formular abschickt - und wenn die Validierung fehlschlägt - werden zuvor deaktivierte Felder (solche mit Daten) aktiviert, so dass der Benutzer sie überschreiben kann, wenn sie wollen - aber ich muss dies verhindern; Gibt es trotzdem Felder, die deaktiviert wurden, weil meine ursprünglichen Daten bei der Rückkehr wieder freigegeben wurden?

Ich deaktiviere die Felder auf einem Button-Klick-Ereignis. Die Felder werden auf Seite Last deaktiviert:

protected void Page_Load(object sender, EventArgs e) 
    { 

     Page.Title = title; 
     Literal formHeader = (Literal)this.Master.FindControl("formHeader"); 
     formHeader.Text = "Travel Booking Request"; 




    if (!Page.IsPostBack) 
      { 
       Load_FormDetails(); 
       Load_SeatingPreference(); 
       Load_UserResponses(); 
       Load_UndergroundTravelZones(); 

      } 
     } 
protected void Load_FormDetails() 
    { 
      string userName = ""; 
      string userPhone = ""; 
      string userTitle = ""; 
      string userEmail = ""; 
      List<KeyValuePair<string, string>> userDetails = Class1.GetUserDetails(); 
      var name = userDetails.Where(kvp => kvp.Key == "UserDisplayName").Select(kvp => kvp.Value).First(); 
      userName = name.ToString(); 
      var phone = userDetails.Where(kvp => kvp.Key == "UserLandline").Select(kvp => kvp.Value).First(); 
      userPhone = phone.ToString(); 
      var jobtitle = userDetails.Where(kvp => kvp.Key == "UserJobTitle").Select(kvp => kvp.Value).First(); 
      userTitle = jobtitle.ToString(); 
      var email = userDetails.Where(kvp => kvp.Key == "UserEmail").Select(kvp => kvp.Value).First(); 
      userEmail = email.ToString(); 
      txtUserName.Text = userName; 

      if (txtUserName.Text != "") 
      { 
       txtUserName.Enabled = "false"; 
      } 
      txtUserPhoneNumber.Text = userPhone; 
      if (txtUserPhoneNumber.Text != "") 
      { 
       txtUserPhoneNumber.Enabled = "false"; 
      } 
      txtUserJobTitle.Text = userTitle; 
      if (txtUserJobTitle.Text != "") 
      { 
       pfptxtUserJobTitle.Enabled = "false"; 
      } 
      txtUserEmail.Text = userEmail; 
      if (txtUserEmail.Text != "") 
      { 
       txtUserEmail.Enabled = "false"; 
      } 
     } 
+0

deaktiviert machen, wo Sie hinzufügen, dass '= false' aktiviert ist, fügen Sie einen Code – Webruster

+0

Sorry - mein schlecht. Ich habe meinen ursprünglichen Post bearbeitet, um Code hinzuzufügen. – chesh78

+0

Wenn Sie Ihre 'TextBox' aktivieren möchten? –

Antwort

0

In Ihrem Textbox defination in ASPX-Seite hinzufügen Readonly = true oder = false aktiviert hinzufügen.

Es wird Textbox permanantly

+0

Ich habe das bereits versucht, aber es gibt mir immer noch mein Problem in umgekehrter Reihenfolge - wenn ich sie in der aspx-Datei deaktiviert habe, dann aktiviere sie, wenn leere Daten von der DB mitgebracht werden, sie werden wieder deaktiviert, wenn die Seite die Validierung beim Senden nicht besteht. Grundsätzlich möchte ich nur, dass die Felder gesperrt werden, wenn sie Daten enthalten, die von der DB mitgebracht wurden. Wenn die Datenbank ein Feld nicht füllen kann (d. H. Es ist keine Telefonnummer gespeichert), möchte ich, dass der Benutzer seine Nummer in diesem Feld eingeben kann. Es ist in Ordnung, bis ich absende und die Seite die Validierung nicht besteht. Bei der Rückkehr wird die Seite in den ursprünglichen Zustand zurückgeladen. – chesh78

+0

Ich glaube, beim Laden der Seite fehlt eine Bedingung. Haben Sie die Eigenschaft ispostback korrekt verwendet? –

+0

Soweit ich weiß, ja ich habe - die Methode, die geladen wird (Load_FormDetails) wird geladen auf Seite-laden - Ich habe den Code oben um zu zeigen, wo es in der ersten Instanz aufgerufen wird. – chesh78

Verwandte Themen