我在后台通过动态绑定menu的 items。可以绑定。。但绑定成功后,
只有第一个items的Menu1_MenuItemClick事件能触发。其它的都不可以。 string connStr = "server=.;database=MySite;uid=sa;pwd=123";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter sda = new SqlDataAdapter("select distinct pKind from bKind ", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MenuItem PMI = new MenuItem();
PMI.Text = ds.Tables[0].Rows[i]["pKind"].ToString();
PMI.Value = "";
initSubMenu(PMI);
}
}
} public void initSubMenu(MenuItem PMI)
{
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter sda = new SqlDataAdapter("select distinct sKind from bKind where pKind='"+PMI.Text+"' ", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MenuItem SMI = new MenuItem();
SMI.Text = ds.Tables[0].Rows[i]["sKind"].ToString();
SMI.Value = ds.Tables[0].Rows[i]["sKind"].ToString();
PMI.ChildItems.Add(SMI);
}
Menu1.Items.Add(PMI);
} protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
string a1 = "";
//MenuEventArgs arg = new MenuEventArgs(PMI);
//Menu1_MenuItemClick(this, arg);
string a = e.Item.Value.ToString();
Response.Write(a);
}
只有第一个items的Menu1_MenuItemClick事件能触发。其它的都不可以。 string connStr = "server=.;database=MySite;uid=sa;pwd=123";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter sda = new SqlDataAdapter("select distinct pKind from bKind ", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MenuItem PMI = new MenuItem();
PMI.Text = ds.Tables[0].Rows[i]["pKind"].ToString();
PMI.Value = "";
initSubMenu(PMI);
}
}
} public void initSubMenu(MenuItem PMI)
{
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter sda = new SqlDataAdapter("select distinct sKind from bKind where pKind='"+PMI.Text+"' ", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MenuItem SMI = new MenuItem();
SMI.Text = ds.Tables[0].Rows[i]["sKind"].ToString();
SMI.Value = ds.Tables[0].Rows[i]["sKind"].ToString();
PMI.ChildItems.Add(SMI);
}
Menu1.Items.Add(PMI);
} protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
string a1 = "";
//MenuEventArgs arg = new MenuEventArgs(PMI);
//Menu1_MenuItemClick(this, arg);
string a = e.Item.Value.ToString();
Response.Write(a);
}
public void initSubMenu(MenuItem PMI)
{
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter sda = new SqlDataAdapter("select distinct sKind from bKind where pKind='"+PMI.Text+"' ", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MenuItem SMI = new MenuItem();
SMI.Text = ds.Tables[0].Rows[i]["sKind"].ToString();
SMI.Value = ds.Tables[0].Rows[i]["sKind"].ToString();
SMI.Click += new EventHanlder(Menu1_MenuItemClick);
PMI.ChildItems.Add(SMI);
}
Menu1.Items.Add(PMI);
}
你输入SMI.之后看看智能提示里有没有……
SMI.GetHashCode;
SMI.GetType;
SMI.ToString;
只有这几个。。其它全是属性
刚才试了一下,貌似没问题啊…… protected void Page_Load(object sender, EventArgs e)
{
this.Menu1.MenuItemClick += new MenuEventHandler(Menu1_MenuItemClick); if (!IsPostBack)
{
for (int i = 0; i < 5; i++)
{
MenuItem item = new MenuItem(i.ToString(), i.ToString());
this.Menu1.Items.Add(item);
for (int j = 0; j < 5; j++)
{
item.ChildItems.Add(new MenuItem(i + "-" + j, i + "-" + j));
}
}
}
} void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
this.ClientScript.RegisterStartupScript(typeof(string), "", "alert('" + e.Item.Value + "');", true);
}
if (!IsPostBack)
{ SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter sda = new SqlDataAdapter("select distinct pKind from bKind ", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MenuItem PMI = new MenuItem( ds.Tables[0].Rows[i]["pKind"].ToString(), ds.Tables[0].Rows[i]["pKind"].ToString());
SqlDataAdapter sda1 = new SqlDataAdapter("select distinct sKind from bKind where pKind='" + PMI.Text + "' ", conn);
DataSet ds1 = new DataSet();
sda1.Fill(ds1);
for (int j = 0; j <= ds1.Tables[0].Rows.Count - 1; j++)
{
string dd = ds1.Tables[0].Rows[j]["sKind"].ToString();
string dd1 = ds1.Tables[0].Rows[j]["sKind"].ToString();
PMI.ChildItems.Add(new MenuItem(dd,dd1));
}
this.Menu1.Items.Add(PMI);
}
}