C# textbox触发TextChanged事件两次,回发两次,第一次回发状态中止
我有一个文本框availableItemsFilterTextBox,用于为网格视图availableItemsGridView提供过滤数据C# textbox触发TextChanged事件两次,回发两次,第一次回发状态中止,c#,asp.net,postback,textchanged,C#,Asp.net,Postback,Textchanged,我有一个文本框availableItemsFilterTextBox,用于为网格视图availableItemsGridView提供过滤数据 网格视图可用的ItemsGridView位于: UpdatePanel和UpdateMode设置为“条件”并触发 设置为TextChanged事件 和带有AutoPostBack=“true”的TabControl 但这只会阻止加载数据,因为第一次回调会加载数据,然后在未呈现的情况下中止。防止第二次回发调用LoadAvailableItems() 在L
网格视图可用的ItemsGridView位于:
OracleDbType.RefCursor
为了使排序和分页可用,我必须从dataset获取dataview。然后将其绑定到availableItemsGridView。据我所知,SqlDataSource不兼容,无法与Oracle配合使用
DataView dataview = availableItemsDataSet.Tables[0].DefaultView;
//dataview is required only to specify sorting
dataview.Sort = sortExpression + sortDirection;
availableItemsGridView.DataSource = dataview;
availableItemsGridView.PageIndex = NewPageIndex;
availableItemsGridView.DataBind();
请帮我解决这个脑筋急转弯。
我无法理解为什么我会收到TextCahnged event twise,以及第一个回发请求是如何以及在何处被中止的?我建议使用Web方法并使用jQuery调用它们。您将看到更好的性能,并避免双重回发 下面是一个很好的例子:
我的进一步研究表明,在Firefox和IE中,文本框的双重回发是一种行为,只有一次回发。。。
<asp:AsyncPostBackTrigger ControlID="availableItemsFilterTextBox" EventName="TextChanged" />
string vsFilter = (string)Session[AvailableItemsFilterTypes_Text];
if (vsFilter != filter)
{
Session.Add(AvailableItemsFilterTypes_Text, filter);
this.LoadAvailableItems();
}
DataView dataview = availableItemsDataSet.Tables[0].DefaultView;
//dataview is required only to specify sorting
dataview.Sort = sortExpression + sortDirection;
availableItemsGridView.DataSource = dataview;
availableItemsGridView.PageIndex = NewPageIndex;
availableItemsGridView.DataBind();