4
私はメニュー項目の2つのレベルでメニューコントロールを持っています! NavigationUrlプロパティを使用すると、私のajax UpdateProgressが起動しないため、OnMenuItemClickイベントの背後にあるコードを介してナビゲートしたいと考えています!asp.netメニューのサブメニュー項目、コードの後ろにリダイレクト
問題は、どのサブメニューアイテムをクリックしても、イベントが発生したときに最初のアイテムが毎回かかりますか?
<asp:Menu ID="Menu1" runat="server" onmenuitemclick="Menu1_MenuItemClick" >
...
<Items>
<asp:MenuItem Text="WorkFlows">
<asp:MenuItem Text="Overview" Value="Workflow"></asp:MenuItem>
<asp:MenuItem Text="Edit" Value="Workflow"></asp:MenuItem>
<asp:MenuItem Text="Create" Value="Workflow"></asp:MenuItem>
<asp:MenuItem Text="Delete" Value="Workflow"></asp:MenuItem>
</asp:MenuItem>
<asp:MenuItem Text="HoursOfBusiness">
<asp:MenuItem Text="Overview" Value="HoursOfBusiness"></asp:MenuItem>
<asp:MenuItem Text="Edit" Value="HoursOfBusiness"></asp:MenuItem>
<asp:MenuItem Text="Create" Value="HoursOfBusiness"></asp:MenuItem>
<asp:MenuItem Text="Delete" Value="HoursOfBusiness"></asp:MenuItem>
</asp:MenuItem>
</Items>
</asp:Menu>
protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
switch (e.Item.Value)
{
case "Workflow":
switch (e.Item.Text)
{
case "Overview":
Response.Redirect("~/RGS/Workflow/Workflow.aspx");
break;
case "Edit":
Response.Redirect("~/RGS/Workflow/WorkflowEdit.aspx");
break;
case "Create":
Response.Redirect("~/RGS/Workflow/WorkflowCreate.aspx");
break;
case "Delete":
Response.Redirect("~/RGS/Workflow/WorkflowDelete.aspx");
break;
}
break;
case "HoursOfBusiness":
switch (e.Item.Text)
{
case "Overview":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
case "Edit":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
case "Create":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHoursCreate.aspx");
break;
case "Delete":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
}
break;
}
したがって、HoursOfBusinessの下の「作成」をクリックすると、概要メニューアイテムがイベントに送信されます。 私は説明が理解できることを願っていますか?
<asp:Menu ID="Menu1" runat="server" OnMenuItemClick="Menu1_MenuItemClick">
<Items>
<asp:MenuItem Text="WorkFlows">
<asp:MenuItem Text="Overview" />
<asp:MenuItem Text="Edit" />
<asp:MenuItem Text="Create" />
<asp:MenuItem Text="Delete" />
</asp:MenuItem>
<asp:MenuItem Text="HoursOfBusiness">
<asp:MenuItem Text="Overview" />
<asp:MenuItem Text="Edit" />
<asp:MenuItem Text="Create" />
<asp:MenuItem Text="Delete" />
</asp:MenuItem>
</Items>
</asp:Menu>
とコードが背後にある。このようなものです::
protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
bool hasParent = (e.Item.Parent != null);
switch (hasParent)
{
case false:
switch (e.Item.Value)
{
case "WorkFlows":
Response.Redirect("~/RGS/Workflow/Workflow.aspx");
break;
case "HoursOfBusiness":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
}
break;
case true:
switch (e.Item.Parent.Value)
{
case "WorkFlows":
switch (e.Item.Value)
{
case "Overview":
Response.Redirect("~/RGS/Workflow/Workflow.aspx");
break;
case "Edit":
Response.Redirect("~/RGS/Workflow/WorkflowEdit.aspx");
break;
case "Create":
Response.Redirect("~/RGS/Workflow/WorkflowCreate.aspx");
break;
case "Delete":
Response.Redirect("~/RGS/Workflow/WorkflowDelete.aspx");
break;
}
break;
case "HoursOfBusiness":
switch (e.Item.Value)
{
case "Overview":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
case "Edit":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
case "Create":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHoursCreate.aspx");
break;
case "Delete":
Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
break;
}
break;
}
break;
}
}
がうまくいけば、これはあなたの問題を解決するのに役立ちます:-)
助けてくれてありがとう!それは今作動する!!私はなぜ理解していないのですか?主な違いは、値のプロパティをチェックするが、それらを設定しないことです? btw:最初のレベルのメニュースイッチケースに感謝します:-) – Schmurgel
メニューアイテムの値を自動的に設定しないと、アイテムの名前が値として使用されます。あなたが持っていた問題は、あなたのmenuitemのTextプロパティをコードでチェックすることができないことです。私はその理由を知らないが、価値をチェックすることは機能するだろう。したがって、コードを実行すると、メニュー項目自体の実際のテキストではなく、「ワークフロー」または「HoursOfBusiness」しか取得できません。だから私は値をテキストの実際の値にして(それを空にしておくことによって)これを解決し、パラレントをチェックします。うまくいけば、この答えはあなたに私のソリューションを少し明確にします。 –