نمایش نتایج 1 تا 3 از 3

نام تاپیک: مشکل در وب‌فرم برای موبایل

  1. #1
    کاربر دائمی آواتار Erfanian
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    مشهد
    پست
    233

    مشکل در وب‌فرم برای موبایل

    با سلام
    من در موبایل وب فرم کنترلی از نوع SelectionList گذاشته‌ام و می‌خواهم هنگام
    رخ دادن SelectedIndexChanged کاری انجام دهم.
    برخلاف وب‌فرمهای معمولی این کنترل فاقد AutoPostBack است و برای چک عوض شدن و کار با آیتمی از SelectionList باید از Command استفاده کرد!
    لطفا علت و راه‌حل را بگوئید. :)

  2. #2
    این سوال یک مقدار جای بحث داره.
    آیتم هایی که در یک کنترل موبایل سلکشن لیست ASP.NET وجود دارند، به سمت سرور اصطلاحا PostBack نمی کنند.
    در حقیقت، وب فرم موبایلی که SelectionList در آن وجود دارد به سمت سرور فرستاده می شود که اینکار با استفاده از یک Command انجام می پذیرد.
    هنگامی که فرم با استفاده از Command به سرور ارسال شد، رویداد SelectedIndexChanged کنترل SelectionList اتفاق می افتد.

    راه دیگه ای که وجود داره این هست که جداگانه برای موبایل هایی که از جاوا اسکریپت پشتیبانی می کنند، کدنویسی جداگانه ای انجام بدیم.
    بدین منظور باید به شکل زیر عمل کرد:

    1) یک کنترل Panel موبایل به فرم اضافه کنید.
    2) یک کنترل deviceSpecific همراه با مساوی قرار دادن مقدار خاصیت Filter بخش Choice آن به supportsJavaScript نیز به فرم اضافه کنید.
    Choice همانند Select Case در VB یا Switch در #C است.
    نکته مهم: برای دستگاه های مختلف باید از Choice های مختلف استفاده کنید. مثلا IsHTML32 برای HTML.
    3) یک کنترل DropDownList به فرم اضافه کنید (کنترل ASP.NET نه موبایل) و خاصیت AutoPostBack آن را برابر با True قرار دهید.
    4) برای دستگاه هایی نیز که از جاوا اسکریپت حمایت نمی کنند، باید یک قسمت ContentType تعریف کنید و کدهای مختص اون دستگاه ها رو در آنجا بنویسید.

    کد توضیحات فوق:

    <mobile:Panel id="Panel1" runat="server">
    <mobile:DeviceSpecific id="DeviceSpecific1" runat="server">
    <Choice Filter="supportsJavaScript">
    <ContentTemplate>
    <asp:DropDownList id="DropDownList1" runat="server"
    OnSelectedIndexChanged=
    "DropDownList1_SelectedIndexChanged"
    AutoPostBack="True">
    <asp:ListItem Value="a">1</asp:ListItem>
    <asp:ListItem Value="b">2</asp:ListItem>
    <asp:ListItem Value="c">3</asp:ListItem>
    </asp:DropDownList>
    </ContentTemplate>
    </Choice>
    <Choice>
    <ContentTemplate>
    <mobile:SelectionList id="SelectionList1"
    runat="server"
    OnSelectedIndexChanged=
    "DropDownList1_SelectedIndexChanged">
    <Item Value="a" Text="1"/>
    <Item Value="a" Text="2"/>
    <Item Value="a" Text="3"/>
    </mobile:SelectionList>
    <mobile:Command runat="server" text="Submit"/>
    </ContentTemplate>
    </Choice>
    </mobile:DeviceSpecific>

    تنطیمات Web.Config:

    <configuration>
    <system.web>
    <deviceFilters>
    <filter name="supportsJavaScript"
    compare="javascript"
    argument="true"/>
    </deviceFilters>
    </system.web>
    </configuration>


    یک مثال: دو فرم داریم و می خواهیم مقادیر انتخاب شده در SelectionList فرم اول (Source) به فرم دوم (Destination) پاس داده شود.

    Source.aspx

    <%@ Page Inherits="System.Web.UI.MobileControls.MobilePage" Language="C#‎" %>
    <mobile:Form runat=server method=post action=destination.aspx>
    <mobile:SelectionList runat=server
    selectType=MultiSelectListBox id=myList>
    <item text=behrouz1 value=1/>
    <item text=behrouz2 value=2/>
    <item text=behrouz3 value=3/>
    </mobile:SelectionList>
    <mobile:command runat=server text=Post/>
    </mobile:Form>



    Destination.aspx

    <%@ Page Inherits="System.Web.UI.MobileControls.MobilePage" Language="C#‎" %>
    <%@ Register TagPrefix="Mobile"
    Namespace="System.Web.UI.MobileControls"
    Assembly="System.Web.Mobile" %>
    <script runat=server language=cs>
    public void Page_Load()
    {
    label1.Text=Request["myList"];
    }
    </script>

    <mobile:form runat=server>
    <mobile:label id=label1 runat=server/>
    </mobile:form>

    نکته مهم: بسته به نوع دستگاه کاربر، مقادیر ارسالی به صفحه Destination.aspx با علامات مختلفی ارسال می شوند.
    مثلا ممکنه مقادیر با ویرگول از هم جدا شده باشند یا در انتهای آنها سیمی کالون وجود داشته باشد که با کدنویسی میشه مقادیر اصلی رو استخراج کرد.

    موفق باشید.
    :wise1:

  3. #3
    کاربر دائمی آواتار Erfanian
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    مشهد
    پست
    233
    با عرض سلام
    بسیار بسیار از جواب شما متشکرم
    همیشه موفق باشید..... :)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •