单击按钮后回发不会在UserControl中第一次没有响应

时间:2012-08-29 15:03:04

标签: c# asp.net

我有一个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放在占位符中。

我希望有人可以帮助我。

2 个答案:

答案 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,这可以解决您的问题。