1

ASP.net のサイト マスターにメニュー バーを作成しました。

<div class="MenuBar">
        <asp:ContentPlaceHolder ID="MainContent" runat="server">
            <asp:Menu ID="menuBar" runat="server" Orientation="Vertical" Width="100%">
                <DynamicHoverStyle CssClass="DynamicHover" />
                <DynamicMenuItemStyle CssClass="DynamicMenuItem" />
                <DynamicSelectedStyle CssClass="DynamicHover" />
                <StaticHoverStyle CssClass="staticHover" />
                <StaticMenuItemStyle CssClass="StaticMenuItem" ItemSpacing="1px" />
                <StaticSelectedStyle CssClass="staticHover" />
            </asp:Menu>
        </asp:ContentPlaceHolder>
    </div>

コードビハインド:

public partial class SiteMaster : System.Web.UI.MasterPage
{

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        getMenu();
    }
}


private void getMenu()
{
    Menu menuBar = new Menu();
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
    con.Open();
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    string sql = "Select [Material Name] from Materials";
    SqlDataAdapter da = new SqlDataAdapter(sql, con);
    da.Fill(ds);
    dt = ds.Tables[0];
    DataRow[] drowpar = dt.Select();
    String s = "sss";
    foreach (DataRow dr in drowpar)
    {
        menuBar.Items.Add(new MenuItem(dr["Material Name"].ToString()));
    }

    con.Close();

}

}

ブラウザでサイトを表示すると、なぜかメニューが表示されません。誰かが理由を知っていますか?ありがとう。

4

1 に答える 1

4

メニューから新しいオブジェクトをインスタンス化してから、既存のメニューと同等にしないでください。新しいオブジェクトをインスタンス化する必要はありません。関数を以下に置き換えるだけです。

    private void getMenu()
{
   // Menu menuBar = new Menu();
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
    con.Open();
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    string sql = "Select [Material Name] from Materials";
    SqlDataAdapter da = new SqlDataAdapter(sql, con);
    da.Fill(ds);
    dt = ds.Tables[0];
    DataRow[] drowpar = dt.Select();
    String s = "sss";
    foreach (DataRow dr in drowpar)
    {
        menuBar.Items.Add(new MenuItem(dr["Material Name"].ToString()));
    }

    con.Close();

}
}

そして、Page_Loadからではなく、 Page_PreRenderから呼び出します。

于 2012-11-05T11:09:39.197 に答える