C# 服务器端事件局部触发

C# 服务器端事件局部触发,c#,asp.net,C#,Asp.net,我有一个产品下拉列表,一个显示订购产品的网格视图和一个按钮,用于将下拉列表中的选定产品添加到网格视图 当有人单击“添加新产品”按钮时,我的服务器端单击处理程序只会启动几次,其他时间不会启动。有什么问题吗 private void AddNewProductToGridView() { if (lstProducts.SelectedIndex < 0) return; Response.Write("Selected Index: " +

我有一个产品下拉列表,一个显示订购产品的网格视图和一个按钮,用于将下拉列表中的选定产品添加到网格视图

当有人单击“添加新产品”按钮时,我的服务器端单击处理程序只会启动几次,其他时间不会启动。有什么问题吗

    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();
    }
关于这一点,我确信除了第一次启动应用程序外,此事件处理程序不会启动

以后的更新

我想我找到了解决问题的办法,学到了一些新东西


顾名思义,如果TextBox的Text属性自上次回发后没有更改,则不会触发TextBox服务器端控件的Text_Changed事件。因此,它作为触发回发的手段是不可靠的。

如果您想按Enter键提交文本框更改,您只需使用
,该按钮将是一个提交按钮。默认情况下,当按下Enter键时,它将提交。

如果您想在Enter键上提交文本框更改,只需使用
,该按钮将是一个提交按钮。默认情况下,按Enter键时,它将提交

我还有一个数量文本框。我希望该按钮作为页面的默认按钮

只需为
指定默认按钮,以便最终提交表单的是该按钮,而不是“最终”按钮(如果有):


...
但是,这里没有区分哪个
TextBox
或其他输入会在按enter键时导致提交

我还有一个数量文本框。我希望该按钮作为页面的默认按钮

只需为
指定默认按钮,以便最终提交表单的是该按钮,而不是“最终”按钮(如果有):


...

这里没有区分哪个
TextBox
或其他输入会在按enter键时导致提交。

发布有关按钮的aspx。我可以肯定地告诉您,
TextChanged
事件会非常可靠地触发。您如何处理事件处理程序?你肯定错过了什么。你说得很对,
TextChanged
只有在文本更改时才会触发。值得注意的是,这与是否有回发无关(例如,当发生回发时,Asp.Net将当前值与以前的值进行比较,并决定是否应引发事件)。发布有关按钮的aspx。我可以肯定地告诉您,
TextChanged
事件会非常可靠地触发。您如何处理事件处理程序?你肯定错过了什么。你说得很对,
TextChanged
只有在文本更改时才会触发。值得注意的是,这与是否有回发无关(例如,当发生回发时,Asp.Net将当前值与以前的值进行比较,并决定是否应引发事件)。
    protected void txtQuantity_TextChanged(object sender, EventArgs e)
    {
        AddNewProductToGridView();
    }
<form defaultbutton="btnAddProduct">
  ...
</form>