2013-07-03 6 views
0

'Quantity'라는 텍스트 상자 열이있는 gridview가 있습니다. 이제는 열의 텍스트가 변경되면 이벤트 핸들러를 실행하려고합니다. 이것은 Text_ChangedEvent 이벤트 핸들러입니다OnTextChanged 이벤트가 실행되지 않습니다.

<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> 

:

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); 
      } 
     } 
    } 

왜 이벤트 처리기가 실행되지

이는있는 gridview에 대한 코드?

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야한다"는 것을 참조하십시오. –

답변

1

TextBox의 AutoPostBack="true" 특성을 설정하십시오.

+0

나는 그것을 시험해 보았다. 그러나, 나는 이상한 행동을 경험하고있다. 이벤트 핸들러에 중단 점을 두는 것은 여전히 ​​실행되지 않음을 보여줍니다. – Matthew

1

이벤트 이됩니다. 페이지에 다시 게시하면 클라이언트 측에서 변경 될 때 결과가 게시 될 때까지 서버가 변경된 사항을 알 수 없습니다.

+0

예 알아요. 나는 그것이 포스트에서 발생하기를 원한다. – Matthew

1

AutoPostBack="True"으로 설정해야합니다.

Here are some solutions.

당신은 자바 스크립트를 사용하여 클라이언트 측에서 유효성 검사를하는 것을 고려해 볼 필요가있다.

+0

AutoPostBack = true로 설정했지만 어떤 이유로 든 이벤트 처리기에 들어 가지 않습니다. – Matthew

+0

그리드에 있기 때문에 – levi

+0

이 문제를 어떻게 해결할 수 있습니까? 감사합니다 – Matthew

관련 문제