我有一个产品下拉列表、一个显示已订购产品的网格视图和一个用于将下拉列表中的选定产品添加到网格视图的按钮。
当有人单击“添加新产品”按钮时,我的服务器端单击处理程序只会触发一些时间,而不会触发其他时间。可能是什么问题呢?
private void AddNewProductToGridView()
{
if (lstProducts.SelectedIndex < 0) return;
Response.Write("Selected Index: " + lstProducts.SelectedValue +
"<br />Selected Text: " + lstProducts.SelectedItem.Text +
"<br />Selected Value: " + lstProducts.SelectedValue);
}
protected void btnAddProduct_Click(object sender, EventArgs e)
{
AddNewProductToGridView();
}
更新 好的,在我发布问题后,按钮的服务器端点击事件每次都开始正常触发。:D
但是,还有另一个问题。我还有一个数量文本框。我希望该按钮充当页面的默认按钮,即当用户输入数量并按下回车键时,AddNewProductToGridView
必须调用相同的服务器端方法。
因此,我将文本框的AutoPostBack
属性设置为True
并为文本框的文本更改事件添加了一个事件处理程序,如下所示:
protected void txtQuantity_TextChanged(object sender, EventArgs e)
{
AddNewProductToGridView();
}
关于这一点,我很肯定这个事件处理程序不会触发,除非我第一次启动应用程序。
稍后更新
我想我找到了解决问题的方法并学到了一些新东西。
顾名思义,如果 TextBox 的 Text 属性自上次回发后未更改,则 TextBox 服务器端控件的 Text_Changed 事件不会触发。因此,它作为触发回发的手段是不可靠的。