PDA

View Full Version : javascript و کار با مالتی یو (MultiVeiw)



majid_darab
چهارشنبه 30 تیر 1389, 16:09 عصر
با سلام و عرض خسته نباشید :
من در قسمت جاوااسکریپت فرمی که دارای مالتی ویو می باشد می خواهم ویوی فعال مالتی ویو رو چک کنم و پس از آن با کنترل های موجود در آن ویو کار کنم.
اما نمی دونم چرا در نت هیچ اطّلاعاتی در رابطه با مالتی ویو و جاوااسکریپت یا مالتی ویو و Jquery پیدا نکردم.
مشکل از این قراراست که ظاهراً اصلاً مالتی ویو با کد جاوااسکریپت شناسایی نمی گردد.
به کد زیر توجه نمایید :


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Keyup._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>

<%-- <script src="JQuery/jquery-1.4.1.js" type="text/javascript"></script>--%>
<script type="text/javascript">

document.onkeyup = onkeyupOfDocument;

function onkeyupOfDocument(evt) {
var evt = evt || window.event;
//alert(evt.keyCode);
//var MultiView = $("*[id$='TextBox1']");
var MultiView = document.getElementById("MultiView1");
alert(MultiView);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
<asp:View ID="View1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:View>
<asp:View ID="View2" runat="server">
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
</html>


در این کد آلرت مربوطه همواره مقدار null را نشان می دهد.
وقتی برای شناسایی مالتی ویو از کد کامنت شده ی jquery استفاده می کنم آلرت مربوطه null نیست - اما باز هم مشکل دارد.

اگر مقدور است مرقوم فرمایید که برای شناسایی ActiveViewIndex مربوط به مالتی ویو (از دوطریق جاوااسکریپت و Jquery) چگونه باید اقدام نمایم که به مشکل برنخورم؟

آنچه که در نت به مراتب توضیح داده شده اینه که تعویض ویوی مالتی ویو به دلیل رندر نشدن ویوهای غیر ویوی حاضر مقدور نمی باشد و برای این کار باید از Div استفاده نمود.
لذا من فقط دنبال چک کردن ویوی فعال هستم تا چنانچه ویوی مورد نظرم فعال بود یک سری کار انجام دهم، نه تعویض ویو.

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

mehdi.mousavi
شنبه 02 مرداد 1389, 23:44 عصر
سلام.
از اونجاییکه کنترل مزبور View های غیر فعال رو Render نمیکنه، شما نمی تونید سمت Client تغییر View فعلی به View ی دیگه ای رو انجام بدید. در حقیقت فقط یک View برای Client رندر خواهد شد که اونهم View ی Active هستش. برای تغییر در View مورد نظر حتما باید درخواستی به سمت سرور ارسال کنید تا از سمت سرور View مورد نظر شما Render بشه.

موفق باشید.

majid_darab
یک شنبه 03 مرداد 1389, 06:56 صبح
با تشکر از زحمات آقای موسوی :
من پس از مشورت با یکی از دوستان که تصادفاً با حرکات موزون مشت ناآشنا نیستند برآن شدم که در تمام جاهایی که view مالتی ویو را در کدبیهایند عوض می کنیم یه Hidden Field استفاده کنم و مقدار اونو در سمت client بررسی کنم.
اینگونه به گونه ای trick مانند کار بررسی ActiveViweIndex راه افتاد ...
اما موضوعی که می خوام در اینجا عنوان کنم اینه که ظاهراً با مالتی ویو سمت کلاینت نمی شه کار کرد و این موضوع رو به این دلیل می گم که وقتی پس از باز کردن پیج در بروزر سراغ سورس می ریم می بینیم که مالتی ویو و ویوها تبدیل به هیچ تگ html ی نشده اند و انگار که مالتی ویوای اصلاً وجود نداشته است و خوب بیخود نبود که کدهای سمت کلاینت از پیدا کردن آن عاجز بودند، حالا دیگر چه برسد به تعویض ویوی مالتی ویو.

لذا تنها راه پیاده سازی مالتی ویو div و امسال آن می باشد تا سمت کلاینت بتوانیم با آن کار کنیم.


درود و دو صد بدرود
اعیاد شعبانیه بر تمامی دوستان مبارک باد
مجید داراب