PDA

View Full Version : متغیر سراسری



explod_javad
سه شنبه 24 دی 1387, 14:56 عصر
سلام
من یک Div دارم که میخام با یک کلید اونو پنهان و قابل نمایش کنم
مشکل من اون جایی هست که وقتی با زدن یک کلید Div فعال شد ، اگر یک postback صورت بگیره دوباره به حالت اول بر میگرده.
یک متغییر سراسری یا یه چیز مثل اون نیاز هست که آخرین وضعیت div توی اون ذخیره بشه.
نمی دونم میشه از کوکی استفاده کرد ؟ نمی دونم چطور ؟

explod_javad
سه شنبه 24 دی 1387, 23:09 عصر
با asp.net کار می کنی/

اگر اینجوری کار می کنی حتما مورد استفادت رو بگو ککه روشی بهتر بهت بگم

من از asp.net استفاده میکنم ولی میخام با جاوا این کارو را انجام بدم.
من میخام بدون post back این کار رو انجام بدم.

Chabok
سه شنبه 24 دی 1387, 23:46 عصر
با سلام . اگر میخواهید در بازدید بعدی هم حفظ وضعیت بشه میتونید از کوکی سمت کلاینت توسط JS استفاده کنید .

اگر هم میخواهید فقط در پست بک ها حفظ وضعیت کنید یک Hidden Filed داخل فرم بزارید و هنگام Collapse شدن و باز شدن مجدد توسط JS آن را مقدار دهی کنید . سپس توسط پست بک شدن مقدار این فیلد به سرور ارسال می شود . سپس هنگام تولید مجدد صفحه آن را سمت سرور چک کنید و مقادیر پیش فرض استایل را روی div خود بنویسید .

اگر نمیتونید روش فعلی خودتون رو بیان کنید .

explod_javad
چهارشنبه 25 دی 1387, 08:11 صبح
دوست من از روش دوم که گفتید ، از hidden filed استفاده کردم ولی بعد از پست بک مقدارش از بین میره ؟

emad_67
چهارشنبه 25 دی 1387, 09:26 صبح
دوست من از روش دوم که گفتید ، از hidden filed استفاده کردم ولی بعد از پست بک مقدارش از بین میره ؟

این ببین:


<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function sethidden()
{
document.getElementById('<%= HiddenField1.ClientID %>').value="1";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="sethidden();" />
</div>
</form>
</body>
</html>



if (Page.IsPostBack)
Response.Write("value is : " + HiddenField1.Value + "<br>");

Chabok
چهارشنبه 25 دی 1387, 11:32 صبح
بهتره Hidden Filed شما سرور ساید نباشه . runat=server را حذف کنید و سمت سرور توسط
Request("HiddenFiledName") مقدار رو بدست بیارید .
و همانطور که میدونید باید Name فیلد رو برای بدست آوردن مقدار سمت سرور تنظیم کنید و از ID اون برای دستکاری مقدار Value سمت کلاینت توسط JS استفاده کنید .

موفق باشید .

emad_67
چهارشنبه 25 دی 1387, 20:00 عصر
بهتره Hidden Filed شما سرور ساید نباشه
چرا مگه چه مزیتی داره؟

explod_javad
چهارشنبه 25 دی 1387, 22:37 عصر
این ببین:


<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function sethidden()
{
document.getElementById('<%= HiddenField1.ClientID %>').value="1";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="sethidden();" />
</div>
</form>
</body>
</html>



if (Page.IsPostBack)
Response.Write("value is : " + HiddenField1.Value + "<br>");


ممنون از راهنمایی شما
مشکل من حل شد

Chabok
چهارشنبه 25 دی 1387, 23:42 عصر
چرا مگه چه مزیتی داره؟
اگر چه مشکل ایشون حل شد خدا رو شکر
ولی من خودم به شخصه چند بار چنین مشکلاتی واسم پیش اومد که مقادیر کنترل های سرور سایدی که سمت کلاینت دچار تغییر میشد توسط خواص سمت سرور قابل بازیابی نبود .(دلیلش رو متوجه نشدم)
و اتفاقا در همین انجمن هم چنین مشکلاتی مطرح شد که توسط همین روش کلاسیک حل شد .

به همین دلیل احتمال دادم در این روش هم چنین مشکلی پیش بیاد که خدا رو شکر حل شد.

ولی در کل هم دو روش تفاوت زیادی ندارند . به هر حال مقادیر به سرور ارسال می شوند و نهایتا Request می شوند . فقط روش سرورساید ما رو درگیر مقادیر ارسالی نمیکنه (واسه همین متعجبم چرا بعضی وقت ها جواب نمیداد)

ممنون . موفق و پیروز باشید