0

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

我希望有一个人可以帮助我。

4

2 回答 2

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();
}
于 2012-09-05T20:52:45.437 回答
0

确保按钮后面的 autopostback 属性设置为 true,这可能会解决您的问题。

于 2012-08-29T15:09:43.840 回答