select 上的完整回发并在更新面板中删除
Full postback on select & remove within update panel
更新面板中的 asp.net 文本框出现问题。添加或删除每个单独的字符时,它工作得非常好,但如果我突出显示文本框中的所有文本,然后将其删除,则会发生完整的回发,而不是预期的部分回发。
为什么会这样?我没有发现任何与此特定问题相关的信息,所以很可能我做错了什么。
aspx 示例:
<asp:UpdatePanel ID="updExample" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Repeater ID="rptExample" runat="server" .... >
<ItemTemplate>
<asp:TextBox ID="txtExample" runat="server" ClientIDMode="static" Text='<%# Eval("Example") %>' OnTextChanged="txtExample_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
示例 TextChanged 事件:
protected void txtExample_TextChanged(object sender, EventArgs e)
{
updExample.Update();
}
补充说明:
- 将 UpdateMode 切换为 'Always' 无效。
Karthikeyan Nagaraj 在评论中指出尝试在我已经拥有的东西旁边添加触发器。我实际上已经有了这个,但是,我在 ItemDataBound 事件中分配了触发器,我在重新调查后意识到这是不正确的。 ItemCreated 事件更合适。
我在 ItemCreated 事件中找到控件没有问题,但是向更新面板添加新的异步回发触发器让我很伤心,并说在更改文本时找不到控件。为了解决这个问题,我使用了脚本管理器 RegisterAsyncPostBackControl();方法如下图
protected void rptExample_ItemCreated(object sender, RepeaterItemEventArgs e)
{
var input = e.item.FindControl("txtExample");
if (input != null) {
ScriptManager sm = ScriptManager.GetCurrent(this);
sm.RegisterAsyncPostBackControl(input);
}
}
更新面板中的 asp.net 文本框出现问题。添加或删除每个单独的字符时,它工作得非常好,但如果我突出显示文本框中的所有文本,然后将其删除,则会发生完整的回发,而不是预期的部分回发。
为什么会这样?我没有发现任何与此特定问题相关的信息,所以很可能我做错了什么。
aspx 示例:
<asp:UpdatePanel ID="updExample" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Repeater ID="rptExample" runat="server" .... >
<ItemTemplate>
<asp:TextBox ID="txtExample" runat="server" ClientIDMode="static" Text='<%# Eval("Example") %>' OnTextChanged="txtExample_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
示例 TextChanged 事件:
protected void txtExample_TextChanged(object sender, EventArgs e)
{
updExample.Update();
}
补充说明:
- 将 UpdateMode 切换为 'Always' 无效。
Karthikeyan Nagaraj 在评论中指出尝试在我已经拥有的东西旁边添加触发器。我实际上已经有了这个,但是,我在 ItemDataBound 事件中分配了触发器,我在重新调查后意识到这是不正确的。 ItemCreated 事件更合适。
我在 ItemCreated 事件中找到控件没有问题,但是向更新面板添加新的异步回发触发器让我很伤心,并说在更改文本时找不到控件。为了解决这个问题,我使用了脚本管理器 RegisterAsyncPostBackControl();方法如下图
protected void rptExample_ItemCreated(object sender, RepeaterItemEventArgs e)
{
var input = e.item.FindControl("txtExample");
if (input != null) {
ScriptManager sm = ScriptManager.GetCurrent(this);
sm.RegisterAsyncPostBackControl(input);
}
}