PDA

View Full Version : تغییر کلاس منو بعد از کلیک کردن منو در مستر پیج(برجسته سازی)



sg.programmer
پنج شنبه 23 تیر 1390, 16:39 عصر
منوی من در مستر پیج قرار داره چطوری باید انتخاب شدن منو را وقتی روی یکی از منو کلیک شد نمایش داد
یعنی کلاسش را تغییر داد

//****** منو *****



<ul>
//*********** خانه
<li><a class="hover" href="Default.aspx">خانه</a></li>
<li><a href="Products.aspx">محصولات</a></li>
<li><a href="Article.aspx">مقالات</a></li>
<li><a href="Services.aspx">خدمات</a></li>
</ul>
***********************


وقتی روی محصولات کلیک شد کلاس class="hover" را بگیره
به اینصورت بشه



//**********محصولات
<li><a class="hover" href="Products.aspx">محصولات</a></li>

sg.programmer
جمعه 24 تیر 1390, 08:45 صبح
چطوری باید تغییر در مستر پیج کلاس منو را عوض کرد
مثل همین سایت برنامه نویس که با کلیک روی قسمت ها رنگ منو تغییر میکنه

rasulp
چهارشنبه 29 تیر 1390, 00:47 صبح
یه نمونه 72662

rasulp
چهارشنبه 29 تیر 1390, 01:04 صبح
http://www.johnpscott.co.uk/devnotes/sitemapmenu/default.aspx

sg.programmer
چهارشنبه 29 تیر 1390, 11:21 صبح
1-چرا namespace برای کد هام فعال نیست و جطوری باید فعال کرد (من به صورت دستی درکدهام .cs و .aspx فضای نام را قرار دادم ولی برنامه کار نکرد ctrls.Add("About.aspx", About); قسمت About مربوط به HtmlGenericControl را نمیشناسه )




72677







Inherits=" TestWebApplication.About"

Inherits="TestWebApplication.SiteMaster"







namespace TestWebApplication

{


{





2-در برنامه شما با وجود گرفتن خطای زیر باز هم برنامه اجرا میشه



72679

3-تابع OnInit(EventArgs e) را باید بصورت دستی اضافه کرد یا یک اونتی هست مثل برنامه های تحت ویندوز که باید از طریق Properties اونو فعال کرد

sg.programmer
پنج شنبه 30 تیر 1390, 11:14 صبح
کسی راه حلی نداره

Himalaya
جمعه 31 تیر 1390, 12:26 عصر
سلام
مثال پست 3 رو اینطوری تغییر بده
کدای بخش html مربوط به masterPage .... تگهای li احتیاجی به runatserver ندارن

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="Stylesheet.css" rel="stylesheet" type="text/css" />
<script>
function setCssClass(pageName) {
document.getElementById(pageName).className = 'itemActive';
}
</script>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="menu">
<ul>
<li id="Default"><a href="Default.aspx">Home</a></li>
<li id="Directions"><a href="Directions.aspx">Directions</a></li>
<li id="About"><a href="About.aspx">About</a></li>
<li id="Contact"><a href="Contact.aspx">Contact</a></li>
</ul>
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>

CodeBehind مربوط به مسترپیج

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.ClientScript.IsStartupScriptRegistered("ActiveClass"))
Page.ClientScript.RegisterStartupScript(this.GetTy pe(), "ActiveClass", "setCssClass('" + Path.GetFileNameWithoutExtension(Request.Path) + "');", true);
}

فایل Css

.itemActive a
{
color: Red;
font-style: italic;
}

sg.programmer
جمعه 31 تیر 1390, 23:03 عصر
من با کد زیر برنامه رو تغییر دادم اعمال میشه ولی بعد از لود صفحه دوباره کلاس از بین میره



<script type="text/javascript">
$(document).ready(function () {

$("#Default").click(function () {
$(Article).addClass("hover")
});
});



برای تست مثال شما CodeBehind مربوط به مسترپیج من فعال نیست و نمی دونم چطوری فعال کنم تا کد رو داخل اون بنویسم (فقط CodeBehind مسترپیج فعال نیست)

Himalaya
جمعه 31 تیر 1390, 23:08 عصر
سلام.
برنامه ات رو بزار اینجا

sg.programmer
شنبه 01 مرداد 1390, 12:03 عصر
کدها در پیوست هست
1-تغییر کلاس منو بعد از کلیک کردن منو ()
2- CodeBehind مربوط به مسترپیج فعال نیست و نمی دونم چطوری فعال کنم

Himalaya
شنبه 01 مرداد 1390, 13:14 عصر
سلام
فکر کنم به ایتم انتخاب شده از منوی بالای سایت میخوای استایل بدی. واسه این کار
1.بدون بخش codebehind. منو رو تو فایل master به این صورت اصلاح کن

<ul id="topMenu">
<li><a id="Default" href="Default.aspx">خانه</a></li>
<li><a id="Products" href="Products.aspx">محصولات</a></li>
<li><a id="Article" href="Article.aspx">مقالات</a></li>
<li><a id="Cooperation" href="Cooperation.aspx">پشتیبانی</a></li>
<li><a id="Services" href="Services.aspx">خدمات</a></li>
<li><a id="ContactUs" href="ContactUs.aspx">ارتباط با ما</a></li>
<li><a id="About" href="About.aspx">درباره ما</a></li>
<li><a href="About.aspx">نمایندگی</a></li>
<li><a href="Default.aspx">خروج</a></li>
</ul>

و بعد این اسکریپت رو هم به قسمت head فایل master اضافه کن

<script src="JQuery/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
var pageName = '<%= System.IO.Path.GetFileNameWithoutExtension(Page.Re quest.Path) %>';
$('#topMenu #' + pageName).attr('style', 'color:red; font-style: italic;');
});
</script>

2. از همون روشی که تو پست 7 گفتم استفاده کن. واسه این که فایل مربوط به codebehind مستر رو بهش اضافه کنی:
تو فایلی که تو پست 10 گذاشتی یه مستر پیج داری به اسم master.master که codebehind نداره. واسه این که این بخش رو بهش اضافه کنی
1 کلاس به پروژه اضافه کن به اسم master.master.cs (دقیقا با همون اسم ولی با پسوند cs). چون پروژت از نوع web site هستش (نه web app) بهت میگه میخوای این فایل رو به پوشه app_code اضافه کنم یا نه.
No رو بزن. بعد این فایل به صورت خودکار تو زیر مجموعه فایل master.master قرار میگیره. فایلی که ایجاد کردی رو باز کن (master.master.cs) و همه کداش رو پاک کن وکدای زیر رو توش قرار بده

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class MyMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
به جای MyMaster که اسم کلاست هست، اسم دلخواهت رو قرار بده
بعد سورس master.master رو باز کن و به جای

<%@ Master Language="C#" %>
کد زیر رو قرار بده

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="master.master.cs" Inherits="MyMaster" %>
مشخصه که تو بخش CodeFile اسم فایلی که ایجاد کردیم قرار گرفته و تو بخش Inherits اسم کلاس موجود تو اون فایل
هر دو تا روش رو هم رو پروژت تست کردم و جواب داد

sg.programmer
شنبه 01 مرداد 1390, 14:42 عصر
تشکر
خیلی تشکر درست شد