2013-12-26 5 views
1

У меня есть 2 раскрывающегося списка, 1 радиокнопка и 1 текстовое поле вместе с кнопкой. Я пытаюсь отключить кнопку, когда выпадающие меню, кнопки радио не выбраны в одностороннем порядке с пустым текстовым полем. Я могу отключить кнопку Dropdown и Radio Button и отобразить сообщение как «Invalid Selection», и для этого я написал код на выбранном событии изменения индекса и даже в Button Click Event и его работоспособности. Но я не могу отключить кнопку, когда текстовое поле пуст. Хотите, чтобы эта кнопка была включена только при вводе текста в текстовом поле, и когда я пытаюсь нажать кнопку, когда текстовое поле пуста, мне нужно сообщение, которое будет отображаться с сообщением «Пожалуйста, введите комментарий». Я также пробовал текстовое событие TextBox, но оно не срабатывает. И, пожалуйста, кто-нибудь дайте мне знать, как собрать все это вместе в событии Button Click, используя флаги.Текст Изменено событие не стреляет

Примечание: при нажатии кнопки нажмите 2 сообщения об ошибках. Это должно появиться в цикле с назначением флагов.

До сих пор я попытался это,

Кнопка Нажмите Код:

protected void BtnSave_Click(object sender, EventArgs e) 
    { 
     if (DrpForYear.SelectedItem.Text == "Please Select" || DrpForMonth.SelectedItem.Text == "Please Select" || RadView.SelectedItem.Text == "") 
     { 
      LblErr.Text = "Invalid Selection!!!"; 
      LblErr.Visible = true; 
      BtnSave.Enabled = false; 
      BtnSave.BackColor = Color.Gray; 
      BtnSave.ForeColor = Color.Red; 
     } 

     else 
      { 
       DTO objc = new DTO(); 

       int Flag = 0; 

       LblLogdInUsername.Text = Session["Username"].ToString(); 
       objc.LogdInUsername = LblLogdInUsername.Text; 

       objc.DateTime = DateTime.Now; 

       objc.Comments = Server.HtmlEncode(this.TxtComments.Text); 

       objc.Company = LblCompany.Text; 

       LblName.Text = Session["Name"].ToString(); 
       objc.Name = LblName.Text; 

       objc.Year = DrpForYear.SelectedItem.Text; 

       objc.Month = DrpForMonth.SelectedItem.Text; 

       objc.ViewPreference = RadView.SelectedItem.Text; 


       int X = obj.InsertButtonComment(objc); 

       if (X >= 0) 
       { 
        Flag = 1; 
       } 

       else 
       { 
        Flag = 0; 
       } 

       if (Flag == 1) 
       { 
        LblSuccess.Visible = true; 
        LblSuccess.Text = "Comment Saved"; 
        LblErr.Visible = false; 
        BtnSave.Enabled = true; 
       } 
       else 
       { 
        LblErr.Visible = true; 
        LblErr.Text = "Failed To Save Comment!!!"; 
        LblSuccess.Visible = false; 
       } 

       objc.LogdInUsername = Convert.ToString(Session["LogdInUsername"]); 
       DataSet GrdVC = obj.GetButtonComment(objc); 
       DataView GrdViewC = new DataView(); 
       GrdViewC.Table = GrdVC.Tables[0]; 
       gvData.DataSource = GrdViewC; 
       gvData.DataBind(); 

       TxtComments.Text = ""; 
       DrpForYear.ClearSelection(); 
       DrpForMonth.ClearSelection(); 
       RadView.Text = ""; 
     } 
    } 

DDL Выбранный индекс коды:

protected void DrpForYear_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (DrpForYear.SelectedItem.Text == "Please Select") 
     { 
      LblErr.Text = "Invalid Selection!!!"; 
      LblErr.Visible = true; 
      BtnSave.Enabled = false; 
      BtnSave.BackColor = Color.Gray; 
      BtnSave.ForeColor = Color.Red; 
     } 

     else 
     { 
      BtnSave.Enabled = true; 
      BtnSave.BackColor = ColorTranslator.FromHtml("#666666"); 
      BtnSave.ForeColor = Color.White; 
     } 
    } 

    protected void DrpForMonth_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (DrpForMonth.SelectedItem.Text == "Please Select") 
     { 
      LblErr.Text = "Invalid Selection!!!"; 
      LblErr.Visible = true; 
      BtnSave.Enabled = false; 
      BtnSave.BackColor = Color.LightGray; 
      BtnSave.ForeColor = Color.Red; 
     } 

     else 
     { 
      BtnSave.Enabled = true; 
      BtnSave.BackColor = ColorTranslator.FromHtml("#666666"); 
      BtnSave.ForeColor = Color.White; 
     } 
    } 

Textbox Изменен Код события:

protected void TxtComments_TextChanged(object sender, EventArgs e) 
    { 
     if (TxtComments.Text == "") 
     { 
      LblErr.Text = "Please Enter a Comment!!!"; 
      LblErr.Visible = true; 
      BtnSave.Enabled = false; 
      BtnSave.BackColor = Color.LightGray; 
      BtnSave.ForeColor = Color.Red; 
     } 

     else if (TxtComments.Text != "") 
     { 
      BtnSave.Enabled = true; 
      BtnSave.BackColor = ColorTranslator.FromHtml("#666666"); 
      BtnSave.ForeColor = Color.White; 
     } 
    } 

аспсовая треска е:

<asp:TextBox ID="TxtComments" runat="server" BorderColor="#666666" BorderWidth="1px" 
Font-Names="Calibri" Font-Size="Small" ForeColor="#034599" Height="106px" TextMode="MultiLine" Width="617px" ontextchanged="TxtComments_TextChanged"> 

+1

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

+1

, не могли бы вы отправить код проекта (файл aspx)? –

+1

@iJay Thnks для ответа. Я вставил только тот код, который полезен для других, чтобы узнать, что и как я пытаюсь получить. Infact Я упомянул в своем посте о проблеме. – Suraj

ответ

4

1. Вы должны установить AutoPostBack свойство TextBox в True.

2., сравнивая вход String с EmptyString, вам необходимо Trim вход, так что whitespaces будет удален.

или

вы можете использовать String.IsNullOrWhiteSpace() для проверки null, empty и whitespaces. Попробуйте это:

Design Code

<asp:TextBox ID="TxtComments" runat="server" OnTextChanged="TxtComments_TextChanged" 
AutoPostBack="True"></asp:TextBox> 

Код Сзади: с помощью функции Trim()

protected void TxtComments_TextChanged(object sender, EventArgs e) 
    { 
     if (TxtComments.Text.Trim().Equals("")) 
     { 
      LblErr.Text = "Please Enter a Comment!!!"; 
      LblErr.Visible = true; 
      BtnSave.Enabled = false; 
      BtnSave.BackColor = Color.LightGray; 
      BtnSave.ForeColor = Color.Red; 
     }  
     else 
     { 
      BtnSave.Enabled = true; 
      BtnSave.BackColor = ColorTranslator.FromHtml("#666666"); 
      BtnSave.ForeColor = Color.White; 
     } 
    }  

или с помощью функции String.IsNullOrWhiteSpace()

protected void TxtComments_TextChanged(object sender, EventArgs e) 
    { 
     if (String.IsNullOrWhiteSpace(TxtComments.Text)) 
     { 
      LblErr.Text = "Please Enter a Comment!!!"; 
      LblErr.Visible = true; 
      BtnSave.Enabled = false; 
      BtnSave.BackColor = Color.LightGray; 
      BtnSave.ForeColor = Color.Red; 
     }  
     else 
     { 
      BtnSave.Enabled = true; 
      BtnSave.BackColor = ColorTranslator.FromHtml("#666666"); 
      BtnSave.ForeColor = Color.White; 
     } 
    }  

Решение 2: дисплей сообщение об ошибке TextBox в качестве первой ошибки

protected void BtnSave_Click(object sender, EventArgs e) 
{ 
    if (TxtComments.Text.Trim().Equals("")) 
    { 
     LblErr.Text = "Please Enter a Comment!!!"; 
     LblErr.Visible = true; 
     BtnSave.Enabled = false; 
     BtnSave.BackColor = Color.LightGray; 
     BtnSave.ForeColor = Color.Red; 
    }  
    else if (DrpForYear.SelectedItem.Text == "Please Select" || DrpForMonth.SelectedItem.Text == "Please Select" || RadView.SelectedItem.Text == "") 
    { 
     LblErr.Text = "Invalid Selection!!!"; 
     LblErr.Visible = true; 
     BtnSave.Enabled = false; 
     BtnSave.BackColor = Color.Gray; 
     BtnSave.ForeColor = Color.Red; 
    } 

    else 
    { 
      /*your code*/ 
    } 
    } 
+0

Спасибо, я полностью забыл об использовании AutoPostBack. Попробуй и давай знать. и спасибо за это «Trim» :) – Suraj

+0

Нужна еще 1 помощь. Я пытаюсь отобразить сообщение об ошибке при нажатии кнопки Buton, когда TextBox пуст. Мне нужно сообщение «Пожалуйста, введите комментарий», но прямо сейчас я получаю как «Недействительный выбор» только для цикла, помещенного в BtnSave вместе. Так что, пожалуйста, дайте мне знать, как отдельно показать, что – Suraj

+0

@Arjun: вам нужно добавить пустую проверку в событие btnSave click в качестве первой проверки, см. Мой отредактированный ответ с 'solution2' –

2

Вы должны установить

TxtComments.AutoPostBack= true

в коде позади

Или

AutoPostBack="True" в TextBox Design Страница

Как это

<asp:TextBox ID="TxtComments" runat="server" AutoPostBack="True"></asp:TextBox> 
0

множества AutoPostBack в истинном

<asp:TextBox ID="TxtComments" runat="server" BorderColor="#666666" BorderWidth="1px" Font-Names="Calibri" Font-Size="Small" ForeColor="#034599" Height="106px" TextMode="MultiLine" Width="617px" ontextchanged="TxtComments_TextChanged" AutoPostBack="true"> 
Смежные вопросы