2016-07-30 2 views
0

私はまだプログラミング全体が新しく、私のクエリに対してより具体的な/直接的な答えを見つけることができませんでした。フォームのサブミット時に無効化されたテキストボックスが再度有効になる問題

私はasp.net C#で構築したフォームをデータベースからデータを取得します。ストアドプロシージャが実行され、一連のテキストボックスに何かが見つかった場合(ユーザーの名前、電子メール、電話番号など)、自動入力されます。入力されたフィールドは無効になります。空のフィールドは、必要に応じてユーザーが完了できるように有効なままです。

しかし、ユーザがフォームを送信し、検証に失敗した場合、以前は無効になっていたフィールド(データ付きのもの)が有効になっているので、ユーザはそれらを上書きすることができます。何らかの理由で、元のデータが無効になっているフィールドが見つかった場合、そのフィールドを再び有効にする必要はありませんか?

私はボタンクリックイベントでフィールドを無効にしています。フィールドは、ページの読み込みで無効化されています:.aspxのページで、あなたのテキストボックスのdefinationで

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

永続的に無効になります

、いくつかのコード申し訳 – Webruster

+0

を貼り付けます。最初の投稿を編集してコードを追加しました。 – chesh78

+0

あなたは 'TextBox'を有効にしたいですか? –

答えて

0

は読み取り専用= trueまたはfalse =有効な追加します。私の悪い - それは、テキストボックスを使用すると、 `= false`を有効にすることを追加している

+0

私はすでにこれを試しましたが、逆の私の問題 - 空のデータがDBから取り込まれた場合、aspxファイルで無効にしてから有効にすると、ページが送信時に検証に失敗した場合に再有効化されます。基本的には、DBから取り込まれたデータが含まれている場合にのみ、フィールドを無効にします。 DBにフィールドを設定できない場合(つまり、電話番号が保存されていない場合)、そのフィールドにその番号を入力できるようにします。私が提出し、ページが妥当性検査に失敗するまでは問題ありません。返されると、ページは元の状態に戻ります。 – chesh78

+0

ページの読み込みに欠落している状態があると思います。正しくispostbackプロパティを使用しましたか? –

+0

私が知っている限り、ロードしているメソッド(Load_FormDetails)はページロード時にロードされています。上記のコードを編集して、最初のインスタンスで呼び出された場所を示しています。 – chesh78

関連する問題