OnTextChanged事件未触发

时间:2013-07-03 19:02:51

标签: c# asp.net events gridview

我有一个gridview,它有一列名为'Quantity'的文本框。现在,我希望在列中的文本发生更改时执行事件处理程序。

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

为什么事件处理程序没有执行?

3 个答案:

答案 0 :(得分:1)

当您回发到页面时,事件触发,当客户端发生变化时,服务器无法知道某些内容已发生变化,直到结果被回发为止。

答案 1 :(得分:1)

在TextBox上设置AutoPostBack="true"属性。

答案 2 :(得分:1)

您需要设置AutoPostBack="True"

Here are some solutions.

您应该考虑使用JavaScript在客户端进行验证。