我有一个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);
}
}
}
为什么事件处理程序没有执行?
答案 0 :(得分:1)
当您回发到页面时,事件将触发,当客户端发生变化时,服务器无法知道某些内容已发生变化,直到结果被回发为止。
答案 1 :(得分:1)
在TextBox上设置AutoPostBack="true"
属性。
答案 2 :(得分:1)