gpt4 book ai didi

Ajax 选项卡控件 TabContainer ActiveTa Changed 事件在每次回发时触发

转载 作者:行者123 更新时间:2023-12-04 05:39:51 25 4
gpt4 key购买 nike

我正在使用 Ajax 选项卡控件,它在每个选项卡中都包含网格。网格有下拉列表和按钮,我想在 gridview Row 的按钮单击时触发 gridview 的 RowCommand 事件。但问题是,每当我单击按钮时,Tabcontainet_ActiveTabChanged 事件就会被触发,并且 GridView 会在触发 RowCommand 事件之前再次绑定(bind)。

我不明白为什么这个事件会自动触发,即使我不是故意触发它。在这种情况下如何触发 RowCommand 事件?
我尝试了更新面板和没有更新面板。

最佳答案

这很奇怪,但是如果事件选项卡发生更改或实际 ActiveTabIndex 属性值等于 0,TabContainer 会在每次回发时触发 ActiveTabChanged 事件。我找不到这种行为的任何原因,因此请自行承担风险使用下面的解决方案。实际上有两种解决方案:第一种是下载 AjaxControlToolkit 源,更改 TabContainer 控件的 LoadPostData 方法并使用自定义 dll:

实际方法:

protected override bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
int tabIndex = ActiveTabIndex;
bool result = base.LoadPostData(postDataKey, postCollection);
if (ActiveTabIndex == 0 || tabIndex != ActiveTabIndex)
{
return true;
}
return result;
}

只需删除 ActiveTabIndex == 0来自上面代码的条件。

或者您可以创建自己的从 TabContainer 继承的类,覆盖该方法并使用此类而不是默认类:
namespace AjaxControlToolkit
{
/// <summary>
/// Summary description for MyTabContainer
/// </summary>
public class MyTabContainer : TabContainer
{
protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
int tabIndex = ActiveTabIndex;

if (SupportsClientState)
{
string clientState = postCollection[ClientStateFieldID];
if (!string.IsNullOrEmpty(clientState))
{
LoadClientState(clientState);
}
}

if (tabIndex != ActiveTabIndex)
{
return true;
}
return false;
}
}
}

关于Ajax 选项卡控件 TabContainer ActiveTa Changed 事件在每次回发时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com