2013-07-03 2 views
0

У меня есть gridview, в котором есть столбец с текстовыми полями, называемый «Количество». Теперь я хочу выполнить обработчик событий, когда текст в столбце изменится.Событие OnTextChanged не срабатывает

Это код GridView:

<asp:GridView ID="GridView_Products" runat="server" BackColor="White" 
     BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
     HorizontalAlign="Center" AutoGenerateColumns="False"> 

     <Columns> 
      <asp:TemplateField HeaderText="Quantity"> 
       <ItemTemplate> 
        <asp:TextBox ID="Textbox_Quantity" runat="server" Width="30px" OnTextChanged="Text_ChangedEvent"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Image"> 
       <ItemTemplate> 
        <img src="Images/<%# Eval("Image_URL") %>" width="80" height="100" alt="Image" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 

     <FooterStyle BackColor="White" ForeColor="#000066" /> 
     <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" 
      HorizontalAlign="Center" /> 
     <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> 
     <RowStyle ForeColor="#000066" HorizontalAlign="Center" /> 
     <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
     <SortedAscendingHeaderStyle BackColor="#007DBB" /> 
     <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
     <SortedDescendingHeaderStyle BackColor="#00547E" /> 
    </asp:GridView> 

Это обработчик события Text_ChangedEvent:

protected void Text_ChangedEvent(object sender, EventArgs e) 
    { 
     Validation val = new Validation(); 

     TextBox textbox_quantity = ((TextBox)(sender)); 
     GridViewRow row = ((GridViewRow)(textbox_quantity.NamingContainer)); 

     if (textbox_quantity.Text.Equals("0") == true) 
     { 
      Label_Error.Visible = true; 
      Label_Error.Text = "Error Message: The quantity cannot be 0!"; 
     } 

     else 
     { 
      if (val.IsNumeric(textbox_quantity.Text) == false) 
      { 
       Label_Error.Visible = true; 
       Label_Error.Text = "Error Message: The quantity must be numeric!"; 
      } 

      else 
      { 
       total = total + (Convert.ToDouble(textbox_quantity.Text) * Convert.ToDouble(row.Cells[5].Text)); 
       transaction.Add(textbox_quantity.Text); 
      } 
     } 
    } 

Почему обработчик события не выполняется?

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

Атрибут AutoPostBack="true" в текстовом поле.

+0

Я попробовал. Однако я испытываю странное поведение. Размещение точки останова в обработчике события показывает, что он все еще не выполняется. – Matthew

1

Событие будет пожара, когда вы отправляете обратно на страницу, когда что-то меняет клиентскую сторону, сервер не знает, что что-то изменилось до тех пор, пока результаты не будут отправлены назад.

+0

Да, я знаю. Я хочу, чтобы это произошло на почте. – Matthew

1

Вам необходимо установить AutoPostBack="True".

Here are some solutions.

Вы должны рассмотреть выполнение проверки на стороне клиента с помощью JavaScript.

+0

Я установил его в AutoPostBack = true, однако он по-прежнему не вводит обработчик события по той или иной причине: s – Matthew

+0

не будет, потому что он находится в сетке – levi

+0

Как мне обойти эту проблему? Спасибо – Matthew