0

UserControls を使用した Web アプリケーションがあります。グリッドのメニュー項目または選択ボタンをクリックすると、最初は反応しなかったことがわかります。2 回目にクリックすると、ボタンの背後にあるイベントが発生します。

私は何を間違っていますか?コンポーネントに一意の ID を与え、イベントは cs ファイルに含まれています。

誰かが私を助けてくれることを願っています。

ありがとう。


問題は、次の 2 つの例にあります。

 <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> 

この場合、初めてメニュー項目をクリックしたときに、ページだけがリロードされたように見えます。2 回目のクリックで、イベントが実際に発生します。この例では、メニュー項目をクリックすると、右側のビューが表示されます。

 <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

私は問題を見つけて解決しました。

私は動的なUserControlFAddressを持っており、彼が別のコントロールを着用するたびに。そこで、メソッドに次の行を追加しました。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 に答える