2

C# マルチビューを使用していますが、最後のメニュー項目をクリックするたびにエラーが発生し、Visual Studio 2010 での実行が停止します。エラーは、'ActiveViewIndex が '8' に設定されています。ビュー コントロールの現在の数 '8' よりも小さくする必要があります。動的に追加されたビューの場合、それらが Page_PreInit イベントの前または中に追加されていることを確認してください。

コード

<div>
<asp:Menu ID="Menu1" runat="server" OnMenuItemClick="Menu1_MenuItemClick" Orientation="Horizontal" style="left: 0px; position: relative; top: 18px; font-family:Arial;" Height="38px" Width="800px" >
    <StaticMenuStyle HorizontalPadding="0px" VerticalPadding="0px" />
    <StaticSelectedStyle BackColor="#EAEAEA" BorderColor="#000000" />
        <Items>
            <asp:MenuItem Text="about us" Value="0" Selected="True"></asp:MenuItem>
            <asp:MenuItem Text="events" Value="1"></asp:MenuItem>
            <asp:MenuItem Text="contact us" Value="2"></asp:MenuItem>
            <asp:MenuItem Text="patio" Value="3"></asp:MenuItem>
            <asp:MenuItem Text="customers" Value="4"></asp:MenuItem>
            <asp:MenuItem Text="family" Value="5"></asp:MenuItem>
            <asp:MenuItem Text="swans" Value="6"></asp:MenuItem>
            <asp:MenuItem Text="swim" Value="7"></asp:MenuItem>
            <asp:MenuItem Text="bonus" Value="8"></asp:MenuItem>
        </Items>
    <StaticHoverStyle BackColor="Silver" />
    <StaticMenuItemStyle BorderColor="#EAEAEA" BorderStyle="Solid" BorderWidth="1px" />
</asp:Menu>
</div>
<div style="width: 800px; height: 450px; background-color: #EAEAEA; border:1px solid #000000; padding:10px 10px 0px 10px; font-family: Arial;" >
    <asp:MultiView ID="MultiView1" runat="server">
          <asp:View ID="View1" runat="server"></asp:View>
<asp:View ID="View2" runat="server"></asp:View>
<asp:View ID="View3" runat="server"></asp:View>
<asp:View ID="View4" runat="server"></asp:View>
<asp:View ID="View5" runat="server"></asp:View>
<asp:View ID="View6" runat="server"></asp:View>
<asp:View ID="View7" runat="server"></asp:View>
<asp:View ID="View8" runat="server"></asp:View>
    </asp:MultiView>
</div>

コードビハインド

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            MultiView1.ActiveViewIndex = 0;
     }

    protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
    {
        MultiView1.ActiveViewIndex = Int32.Parse(Menu1.SelectedValue);
    }

どんな助けでも超大物になるでしょう。

4

1 に答える 1

1

9 つのメニュー項目と 8 つのビューがあります

  MultiView1.ActiveViewIndex = 8

ActiveViewIndexはゼロベースであるため失敗します(正しく実装したため)

最初に MultiView1.Views の長さを評価してから、ActiveViewIndex を設定できます

int index = Int32.Parse(Menu1.SelectedValue)

if (MultiView1.Views.Count >  index) 
{
    MultiView1.ActiveViewIndex = index
}

おそらく、 index が でなく-1、 より大きいか等しいかどうかを確認する必要があり0ます。

于 2011-06-26T08:23:37.000 に答える