<asp:UpdatePanel runat="server" ID="adavanceGrpngLB_UP" UpdateMode="Conditional">
<ContentTemplate>
<%--code[@**] 10-Nov-22 code changed Adding Search text box in Target Column Mapping Setting Popup code start--%>
<asp:TextBox ID="search_advgrp" class="form-control form-control-sm mt-1 mr-1 adv_search_col" runat="server" AutoPostBack="false" OnTextChanged="searchFilterTextAdvancedgrp" placeholder="Search Column"></asp:TextBox>
<asp:Button ID="clearListBoxAdvGrp" OnClick="clearSearchTextAdvancedgrp" title="Clear Search" runat="server" Text="x" class="Adv_clr_ser"></asp:Button>
<%--code[@**]10-Nov-22 code changed Adding Search text box in Target Column Mapping Setting Popup code end --%>
<asp:Button runat="server" ID="loadcol" OnClick="Load_advancegroupLB" Style="display: none" />
<asp:ListBox runat="server" ID="adavanceGrpngLB" SelectionMode="Multiple" AutoPostBack="false" Style="max-width: 25em; min-width: 13em; margin-left: 2em; margin-right: .5em; max-height: 60em;"></asp:ListBox>
<asp:Button runat="server" ID="Button3" OnClick="advancegroup_additem_Click" Style="position: absolute; margin-top: 1.1em;" Text=">>" />
<asp:Button runat="server" ID="Button4" OnClick="advancegroup_removeitem_Click" Style="position: absolute; margin-top: 3.2em;" Text="<<" />
<asp:ListBox runat="server" ID="ExadavanceGrpngLB" SelectionMode="Multiple" AutoPostBack="false" Style="max-width: 25em; min-width: 13em; width: 13em; margin-left: 3.1em; max-height: 60em;"></asp:ListBox>
<span>
<%-- <button type="button" id="Button5" runat="server" title="Rename this Rule." style="height: 2.2em !important" class="ml-1 fa fa-angle-double-up" ><i class="fas fa-edit"></i></button>
<button type="button" id="Button6" title="Delete this Rule." style="heighty: 2.2em !important" class="ml-1 mr-1 btn btn-sm btn-outline-secondary" ><i class="fas fa-trash-alt"></i></button>--%>
<%-- <asp:Button runat="server" class="ml-1 fa fa-angle-double-up rotate" ID="group_up" OnClick ="advancegroup_moveup_Click" Text="<<" Style="position: absolute; margin-top: 1.1em;"/>
<asp:Button runat="server" class=" ml-1 fa fa-angle-double-down rotate" ID="group_down" OnClick ="advancegroup_movedown_Click" Text=">>" Style="position: absolute; margin-top: 3.2em;"/>--%>
<%--02 July22 code[@*] Button--%>
<asp:Button runat="server" class="ml-1 fa fa-angle-double-up rotate" ID="group_up" OnClick="advancegroup_moveup_Click" Text="▲" Style="position: absolute; margin-top: 1.1em;" />
<asp:Button runat="server" class=" ml-1 fa fa-angle-double-down rotate" ID="group_down" OnClick="advancegroup_movedown_Click" Text="▼" Style="position: absolute; margin-top: 3.2em;" />
</span>
</ContentTemplate>
</asp:UpdatePanel>
</div>**strong text**
实际上我正在使用asp.net webform框架。我的情况是,如果我在文本框中输入一个单词,它不会触发 OnTextChange 事件中的“searchFilterTextAdvancedgrp”。如果我更改 AutoPostBack = true ,它会触发该函数,但 Page_Load 也会触发,导致用户性能不佳。我想触发OnTextChange而不触发Page_Load函数。我是开发环境的新手,如果我犯了任何错误,请纠正我。提前致谢。以下代码块是我在 c# 中的 OnTextChange 事件代码块
public void searchFilterTextAdvancedgrp(object sender, EventArgs e)
{
string searchvalueadvgrp = (search_advgrp.Text).Trim(); //length > 0 --->clearSearchTextAdvancedgrp(null, null)
string[] advgrplistBoxItems = new string[adavanceGrpngLB.Items.Count];
WriteLog("***Advanced column length " + adavanceGrpngLB.Items.Count);
WriteLog("Advanced column values" + adavanceGrpngLB.ToString());
WriteLog(" **********List Items *********" + advgrplistBoxItems.ToString());
//081123 code[****] - start get target side columns, assign to advancegrouparraylist
for(int i =0; i< adavanceGrpngLB.Items.Count; i++)
{
advancedGroupingArrayList.Add(adavanceGrpngLB.Items[i].ToString());
}
//081123 code[****] - end get target side columns, assign to advancegrouparraylist
//code[@**] 16-Nov-22 code changed clear the textbox value code start
if (search_advgrp.Text.Length <= 0)
{
clearSearchTextAdvancedgrp(null, null);
return;
}
//code[@**] 16-Nov-22 code changed clear the textbox value code end
List<string> searchListAdv = new List<string>();
WriteLog("Target Array List " + advancedGroupItems.ToString());
// 081222 code[**] Ne need to Loop the Data Array List --
foreach (var item in advancedGroupingArrayList)
{
WriteLog("Values " + item.ToString());
if (item.ToString().ToLower().Contains(searchvalueadvgrp.ToLower())) searchListAdv.Add(item.ToString());
}
// --
//advancedGroupingArrayList
searchListAdv.Sort();
foreach (var eachItems in searchListAdv)
{
WriteLog("each items values adv " + eachItems.ToString());
adavanceGrpngLB.Items.Add(eachItems.ToString());
}
// Sort the ArrayList Directly --
//advancedGroupingArrayList.Sort();
adavanceGrpngLB.DataSource = searchListAdv;
adavanceGrpngLB.DataBind();
//--
// Set the Tooltip After Search
settooltipLB();//--
// 081222 end---
hidejson.Update();
WriteLog("===========" + searchListAdv.ToString());
adavanceGrpngLB_UP.Update();
}
请记住,使用更新面板并不阻止或意味着页面加载事件不会触发(它会触发)。请记住,使用更新面板时会发生完整的常规页面生命周期。
这里正确的术语是我们所说的部分页面回发。这仍然意味着页面加载事件,并且当更新面板中发生任何回发时,整个页面生命周期仍然运行。看起来可能没有发生页面回发,但它们确实发生了!!!
当然,当使用更新面板时,只有更新面板区域内的控件可以通过代码隐藏进行更新。这里的想法是,您可以减少页面回发的大小,因为只有页面的那部分被发送到服务器,然后返回到客户端。
因此,虽然此类带有更新面板的回发仅回发网页的一部分,但标准页面事件(例如页面加载事件)每次都会运行。
但是,每次单击简单的按钮时,页面加载事件总是会运行。这意味着您运行来设置网页的设置代码、数据加载代码和类型代码?
我可以而且经常应该被放置在页面加载事件中,但是您需要测试该页面是否真的是第一个页面加载。
因此,99%,或者实际上是我在 asp.net webforms 中构建的最后 200 个网页?
每个人都有这个:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadGrid
End If
End Sub
Sub LoadGrid()
GVHotels.DataSource = MyRst("SELECT * FROM tblHotelsA
ORDER BY HotelName")
GVHotels.DataBind()
End Sub
因此,请注意我们如何将页面加载代码事件编写为仅运行一次,并且仅在第一次实际页面加载时运行。作为一般规则,您不能重新加载网格,甚至不能重新加载简单的组合框,因为如果每次重新加载此类数据,那么这些控件的用户选择将丢失。
请记住,对于任何按钮单击或任何控件上的自动发布,首先触发页面加载事件,然后触发控件事件代码存根。
因此,如果页面加载事件中没有所有重要的 If Not IsPostBack 代码存根,则几乎不可能构建一个工作网页。
无论您是否使用更新面板,此建议都适用。
但是,如上所示,回发时的更新面板将首先触发页面加载,然后触发自动回发的代码存根。按理说,在构建页面时,几乎所有情况下的页面加载事件代码都需要放置在 htat If Not IsPostBack 存根内,这适用于您构建的几乎每个页面 - 不仅仅是带有 udpate 面板的页面。