我有一个UserControls的web应用程序。当我点击网格中的菜单项或选择按钮时,我看到第一次没有反应。当我第二次点击时,按钮后面的事件将会触发。
我错了什么? 我给组件一个唯一的ID,事件在cs文件中。
我希望有人可以帮助我。
感谢。
问题在以下两个例子中:
<asp:Menu ID="TabMenu" Width="100%" Height="25px" runat="server"
Orientation="Horizontal" CssClass="TabPages"
StaticEnableDefaultPopOutImage="False"
AutoPostBack="true"
OnMenuItemClick="DoMenuItemClick" >
<Items>
<asp:MenuItem Text="Domains" Value="0"></asp:MenuItem>
在这种情况下,当您第一次点击菜单项时,看起来只会重新加载页面。当第二次点击时,事件真的会激发。在此示例中,当您单击菜单项时,将显示右侧视图。
<asp:GridView ID="gvwSelection" runat="server"
AllowPaging="True"
SelectedIndex="1"
AutoGenerateSelectButton="True"
OnSelectedIndexChanged="gvwSelectie_SelectedIndexChanged"
OnSelectedIndexChanging="gvwSelectie_SelectedIndexChanging" >
<PagerStyle ForeColor="#00257e" HorizontalAlign="Right"
BackColor="#FFFFFF"></PagerStyle>
</asp:GridView>
示例2:第一次单击选择按钮时,未选择您触摸的行。并且在第一次之后一切正常。
ID具有固定名称。 AutoPostBack设置为True。 有一个事件相关联。 网格有DataBinded。 site.master是default.aspx,UserControls放在占位符中。
我希望有人可以帮助我。
答案 0 :(得分:1)
我找到并解决了这个问题。
我有一个动态的UserControl FAddress,每次他都穿着另一个控件。 所以我在方法中添加了以下行: FAddress.ID =“UserControl1”;
问题是,控件每次都在加载。通过为此动态控件提供固定ID,此项已解决。
private void LoadPage(string APageName)
{
FAddress = null;
PlaceholderAddressTemplate.Controls.Clear();
if (!string.IsNullOrEmpty(APageName))
{
FAddress = (UserControl)LoadControl(string.Format("~/UserControls/{0}.ascx",
APageName));
if (FAddress != null)
{
FAddress.ID = "UserControl1";
PlaceholderAddressTemplate.Controls.Add(FAddress);
ShowOrHideComponents();
FAddress.Focus();
}
else
ShowOrHideComponents();
}
else
ShowOrHideComponents();
}
答案 1 :(得分:0)
确保按钮后面的autopostback属性设置为true,这可以解决您的问题。