2012-05-08 63 views
1
sqlstr = "select ModuleName,ModuleId,pagename from modules WHERE ParentID='" + parentID + "' AND VIsibility=1 ORDER BY ModuleId"; 

cmd.CommandText = sqlstr; 
cmd.Connection = cn; ; 
dr = cmd.ExecuteReader(); 

while (dr.Read()) 
{ 
    menu.Tag = dr["ModuleId"].ToString(); 
    menu.Text = dr["ModuleName"].ToString(); 
    menu.Name = dr["pagename"].ToString(); 
    menu.ToolTipText = dr["pagename"].ToString(); 
    menuStrip1.Items.Add(menu); 
    menuStrip1.Show(); 
} 

cn.Close(); 
dr.Close(); 

從query.how只增加最後一個項目從查詢如何添加ToolStripMenuItems動態

+0

也如果u [R關閉連接u需要不關閉閱讀器,它就會自動配置。但是,作爲良好編碼習慣的一部分,你總是應該關閉讀者,這隻有在關閉連接之前做到這一點纔有意義。 – nawfal

回答

1

你必須在每次循環創建一個新的ToolStripMenuItem添加的所有項目。您只需在同一個菜單實例上覆蓋屬性。

3
while (dr.Read()) 
{ 
    // If you don't do this, you are just changing the same 
    // ToolStripMenuItem object all the time. 
    menu = new ToolStripMenuItem(); 

    menu.Tag = dr["ModuleId"].ToString(); 
    menu.Text = dr["ModuleName"].ToString(); 
    menu.Name = dr["pagename"].ToString(); 
    menu.ToolTipText = dr["pagename"].ToString(); 
    menuStrip1.Items.Add(menu); 
    menuStrip1.Show(); 
} 
+0

@KeithS下一步是使用命令參數和'using'關鍵字。 – SimpleVar

+0

謝謝先生。 – siva

0

嘗試在每次讀取新行時創建新的菜單實例。

事情是這樣的:

while (dr.Read()) 
{ 
    var menu = new ToolStripMenuItem(); 

    ... 
}