PDA

View Full Version : درخواست كمك در خصوص بخش نظرخواهي سايت



hamed2661
شنبه 01 اسفند 1388, 12:19 عصر
با سلام - بي مقدمه بگم:
مشكلي كه بهش برخوردم اينه كه سفارش دهنده سايتي كه كار طراحيشو دارم انجام ميدم ازم خواسته سئوالات قسمت نظر خواهي رو به صورت دايناميك (يعني مدير سايت بتونه تعداد نامشخصي سئوال طرح كنه ) در بيارم به اينصورت كه تعدادي سئوال براي بازديد كننده نمايش داده بشه و اون از بين 5 گزينه خيلي زياد تا بسيار كم گزينه مد نظرشو (چك باكس يا دكمه راديويي) انتخاب كنه. حالا نميدونم چيكار كنم اگر دوستان طرح ايده يا نظر يا كدي دارن ممنون ميشم مرحمت كنن.

mehdi.mousavi
شنبه 01 اسفند 1388, 12:33 عصر
با سلام - بي مقدمه بگم:
مشكلي كه بهش برخوردم اينه كه سفارش دهنده سايتي كه كار طراحيشو دارم انجام ميدم ازم خواسته سئوالات قسمت نظر خواهي رو به صورت دايناميك (يعني مدير سايت بتونه تعداد نامشخصي سئوال طرح كنه ) در بيارم به اينصورت كه تعدادي سئوال براي بازديد كننده نمايش داده بشه و اون از بين 5 گزينه خيلي زياد تا بسيار كم گزينه مد نظرشو (چك باكس يا دكمه راديويي) انتخاب كنه. حالا نميدونم چيكار كنم اگر دوستان طرح ايده يا نظر يا كدي دارن ممنون ميشم مرحمت كنن.

سلام.
خوب، باید یک جدول تو بانک بسازید تا کاربر بتونه سوالات مورد نظر خودش رو از طریق backoffice به اون جدول اضافه کنه. سپس، جدول دیگه ای دارید، که پاسخهای داده شده به هر سوال رو در اون نگهداری میکنید. میتونید این پاسخها رو بازای هر کاربر نگهداری کنید، تا یک کاربر نتونه به یک سوال، دو بار (یا بیشتر) پاسخ بده. بقیه اش هم که معلومه. یه UserControl باید داشته باشید که سوال مورد نظر رو به کاربر نشون بده، و امکان پاسخ گرفتن از کاربر رو فراهم کنه. پاسخ هر چی بود، در جدول دوم ذخیره میشه و در صورت نیاز، آمار پاسخهای داده شده به سوال مزبور توسط دیگر کاربران به کاربر متقاضی نشون داده میشه.

موفق باشید.

hamed2661
یک شنبه 02 اسفند 1388, 07:23 صبح
سلام.
خوب، باید یک جدول تو بانک بسازید تا کاربر بتونه سوالات مورد نظر خودش رو از طریق backoffice به اون جدول اضافه کنه. سپس، جدول دیگه ای دارید، که پاسخهای داده شده به هر سوال رو در اون نگهداری میکنید. میتونید این پاسخها رو بازای هر کاربر نگهداری کنید، تا یک کاربر نتونه به یک سوال، دو بار (یا بیشتر) پاسخ بده. بقیه اش هم که معلومه. یه UserControl باید داشته باشید که سوال مورد نظر رو به کاربر نشون بده، و امکان پاسخ گرفتن از کاربر رو فراهم کنه. پاسخ هر چی بود، در جدول دوم ذخیره میشه و در صورت نیاز، آمار پاسخهای داده شده به سوال مزبور توسط دیگر کاربران به کاربر متقاضی نشون داده میشه.

موفق باشید.

جناب موسوي از حسن توجهتون ممنونم چيزي كه جنابعالي فرمودين كليات مساله است كه روشنه مشكل من تو همون قسمت اوله. فرض كنيم مدير سايت بخواد براي بار اول 10 سئوال طرح كنه و براي بار دوم مثلا 8 تا سئوال، اون وقت چه جوري به تعداد لازم جلوي بسته به تعداد سئوالها چك باكس بذارم؟ دكمه ثبت نظر چه جوري كد نويسي بشه كه اين تعداد نا معلوم نتيجه رو توي جدول دوم (نتايج) ثبت كنه؟ تو Help ويژوال استوديو توضيحاتي در مورد استفاده از كنترل پنل براي اين منظور داده شده ولي از نحوه استفاده اون سر در نياوردم. بازم ممنونم.

hamed2661
یک شنبه 02 اسفند 1388, 12:49 عصر
كسي جوابي به نظرش نميرسه؟ :ناراحت:

khz-web1
یک شنبه 02 اسفند 1388, 16:47 عصر
سلام....
من یک راه حل بهت پیشنهاد میدم....
1-فرض کن مدیر لوگین کرده و می خواهد سوال ارسال کند، اینجا شما باید یک textbox برای خود سوال و یک textbox هم برای جواب... حالا سوالی که پیش میاد اینکه ، ما فقط یک textbox داریم!... خوب راه حلی که به ذهن من میرسه اینکه شما باید از ایجاد textbox در حالت اجرا استفاده کنید... یعنی کنترل در حالت اجرا به صفحه اضافه بشه! و بعد مقدار اون کنترل هم بدست بیاد(سعی کن آجاکسی کار کنید که رفرش نشه)
2- برای چاپ سوال و آیتم های تستی اون (که چک باکس هستش) میتونی خود سوال رو توی یک رپیتر(مسلا یک label در لیپیتر) و جواب رو در یک ریپتر دیگه که در همان ریپتر قبلی قرار داره بزاری...
3- برای ارسال جواب هم ... chebox1.selecteditem یا optionbutton1.selectitem
موفق باشید

hamed2661
دوشنبه 03 اسفند 1388, 09:15 صبح
سلام....
من یک راه حل بهت پیشنهاد میدم....
1-فرض کن مدیر لوگین کرده و می خواهد سوال ارسال کند، اینجا شما باید یک textbox برای خود سوال و یک textbox هم برای جواب...

سلام دوست عزيز همشهري ! خوشحالم اينجا ميبينمتون. اينجاي كار مشكلي نيست و همونطور كه عرض كردم جوابها ثابت هستند و از خيلي زياد تا خيلي كم...



یعنی کنترل در حالت اجرا به صفحه اضافه بشه! و بعد مقدار اون کنترل هم بدست بیاد(سعی کن آجاکسی کار کنید که رفرش نشه)
2- برای چاپ سوال و آیتم های تستی اون (که چک باکس هستش) میتونی خود سوال رو توی یک رپیتر(مسلا یک label در لیپیتر) و جواب رو در یک ریپتر دیگه که در همان ریپتر قبلی قرار داره بزاری...
3- برای ارسال جواب هم ... chebox1.selecteditem یا optionbutton1.selectitem

منم سئوالم همينه كه اينكارو چه جوري انجام بدم و چه جوري بسته به ركوردهايي كه تو جدول سئوالات وجود داره كنترلها رو ايجاد كنم و جوابا رو بگيرم (در عمل)؟ انگار ميدونم ميخوام چيكار كنم ولي يه جورايي مخم منجمد شده !!

mehdi.mousavi
دوشنبه 03 اسفند 1388, 10:59 صبح
چه جوري بسته به ركوردهايي كه تو جدول سئوالات وجود داره كنترلها رو ايجاد كنم و جوابا رو بگيرم (در عمل)؟ انگار ميدونم ميخوام چيكار كنم ولي يه جورايي مخم منجمد شده !!

سلام.
دو روش واسه این کار وجود داره. اول اینکه یه UserControl بسازید و امکان Binding براش فراهم کنید، سپس توی کد وقتی UserControl رو ایجاد کردید و به فرم افزودید، DataSource اش رو هم Bind کنید تا در درون کنترل، بتونید Link ها یا Radio Button های مورد نظرتون رو بصورت Dynamic ایجاد کرده و به Container مورد نظر اضافه کنید.

روش دوم، اینه که بزن و برو کار کنید، یعنی توی Load صفحه، (حالا یا Page_Load یا با override کردن Onload)، اطلاعات مورد نظر رو از بانک بگیرید، سپس همونجا، یک RadioButtonList ایجاد کرده و به تعداد آیتمهایی که از بانک گرفته اید، RadioButton ها رو به این Container اضافه کنید. میتونید اینجا هم RadioButtonList رو به Data Source مورد نظر Bind کنید و ...

حالا شما دقیقا با کجای این مساله مشکل دارید؟

موفق باشید.

hamed2661
دوشنبه 03 اسفند 1388, 11:27 صبح
یک RadioButtonList ایجاد کرده و به تعداد آیتمهایی که از بانک گرفته اید، RadioButton ها رو به این Container اضافه کنید. میتونید اینجا هم RadioButtonList رو به Data Source مورد نظر Bind کنید و ...

حالا شما دقیقا با کجای این مساله مشکل دارید؟

موفق باشید.

دقيقاً همين جا!!! :



یک RadioButtonList ایجاد کرده و به تعداد آیتمهایی که از بانک گرفته اید، RadioButton ها رو به این Container اضافه کنید. میتونید اینجا هم RadioButtonList رو به Data Source مورد نظر Bind کنید و ...

بازم از لطفتون ممنونم

mehdi.mousavi
دوشنبه 03 اسفند 1388, 12:02 عصر
دقيقاً همين جا!!! بازم از لطفتون ممنونم

شوخی می کنید؟ خوب، یک RadioButtonList رو new کنید، (توی Page_Load) و اونو به داده هایی که از بانک دریافت کرده اید (به شکل DataSet، Custom Object یا هر ساختار دیگه ای)، Bind کنید. شما خودتون شروع به نوشتن همچین چیزی کنید، اگر مشکلی بود کدتون رو بذارید تا من رفعش کنم.

موفق باشید.

hamed2661
شنبه 08 اسفند 1388, 14:21 عصر
با سلام مجدد
با همكاري شما دوستان كارو به اينجا رسوندم كه با استفاده از رپيتر و Item template هاش فرم طراحي بشه بازم اينجا گير كردم كه چه جوري بفهمم كاربر كدوم يكي از راديو باتنهاي هر سطر رو انتخاب كرده. كدها ايناس:




<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_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>Untitled Page</title>
</head>
<body style="text-align: right; background-color: #f0f0f0;">
<asp:SqlDataSource ID="SqlDataSrc" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
SelectCommand="SELECT * FROM [polls] ORDER BY [id]"></asp:SqlDataSource>
<form id="form1" runat="server">

<br />

<div align="center" style="border-right: black 1px solid; border-top: black 1px solid;
border-left: black 1px solid; border-bottom: black 1px solid; background-color: #b4b4b4;"><br />
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSrc">
<HeaderTemplate>
<table align="center" border="1" width="98%" frame="box" cellpadding="0" cellspacing="0" >
<tr height="35" style="background-color: #ffffcc;">
<td width="4%" align="center" style="color: #000099; font-family: Tahoma; font-size: x-small;"><b>خیلی کم</b></td>
<td width="4%" align="center" style="color: #000099; font-family: Tahoma; font-size: x-small;"><b>کم</b></td>
<td width="4%" align="center" style="color: #000099; font-family: Tahoma; font-size: x-small;"><b>متوسط</b></td>
<td width="4%" align="center" style="color: #000099; font-family: Tahoma; font-size: x-small;"><b>زیاد</b></td>
<td width="4%" align="center" style="color: #000099; font-family: Tahoma; font-size: x-small;"><b>خیلی زیاد</b></td>
<td width="76%" align="center" style="color: #000099; font-family: Tahoma; font-size: smaller;"><b>سئوال</b></td>
<td width="4%" align="center" style="color: #000099; font-family: Tahoma; font-size: x-small;"><b>ردیف</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr height="35" style="background-color:White;" >
<td width="4%" align="center" style="font-family: Tahoma; font-size:small;"> <asp:RadioButton ID="btn1" runat="server" GroupName="a" /> </td>
<td width="4%" align="center" style="font-family: Tahoma; font-size:small;"> <asp:RadioButton ID="btn2" runat="server" GroupName="a" /> </td>
<td width="4%" align="center" style="font-family: Tahoma; font-size:small;"> <asp:RadioButton ID="btn3" runat="server" GroupName="a" /> </td>
<td width="4%" align="center" style="font-family: Tahoma; font-size:small;"> <asp:RadioButton ID="btn4" runat="server" GroupName="a" /> </td>
<td width="4%" align="center" style="font-family: Tahoma; font-size:small;"> <asp:RadioButton ID="btn5" runat="server" GroupName="a" /> </td>
<td width="76%" dir="rtl" align="right" style="font-family: Tahoma; font-size:small;"> <%#DataBinder.Eval(Container.DataItem, "Question_text")%> </td>
<td width="4%" align="center" style="font-family: Tahoma; font-size:small;"> <%#DataBinder.Eval(Container.DataItem, "question_id")%> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<br />
</div>

hamed2661
یک شنبه 09 اسفند 1388, 15:26 عصر
كسي جوابي به نظرش نميرسه؟

mehdi.mousavi
یک شنبه 09 اسفند 1388, 15:56 عصر
كسي جوابي به نظرش نميرسه؟

سلام.
ابتدا خدمتتون عرض کنم که DataGrid، DataList و Repeater از ASP.NET 1.1 با کنترلهای بهتری تحت عناوین GridView، DetailsView و FormView در ASP.NET 2.0 عوض شدن. در نتیجه، امروزه دیگه کسی از Repeater استفاده نمیکنه و مطلقا دلیلی هم برای انجام اینکار وجود نداره (این کنترلها هم بخاطر Backward-Compatibility هستش که هنوز با ASP.NET 2.0+ عرضه میشن).

بنابراین، توصیه من ابتدا این هستش که جای Repeater از ListView (در صورتیکه از .NET 3.5 استفاده می کنید)، استفاده کنید.

در هر حال، برای اینکه متوجه بشید چطور می تونید تغییرات رو بگیرید، این لینک (http://www.asp101.com/articles/lee/multiupdate/default.asp) رو ببینید. اینجا دقیقا اون چیزی رو که دنبالش هستید (گرفتن تغییرات و ثبت اونها) رو با استفاده از Repeater براتون توضیح میده.

موفق باشید.

hamed2661
دوشنبه 10 اسفند 1388, 07:20 صبح
جناب موسوي از جواب روشن و كارگشاتون ممنونم . فقط يك سئوال ميمونه وقتي هاست گفته ASP.NET 2.0 رو پشتيباني ميكنه اين دست و پاي آدمو نميبنده و محدودش نميكنه به استفاده از قابليتهاي موجود در ورژن 2؟

توضيح:
(سوء تفاهم نشه يك وقت آهنگ سئوالم بد بود !)

mehdi.mousavi
دوشنبه 10 اسفند 1388, 10:47 صبح
جناب موسوي از جواب روشن و كارگشاتون ممنونم . فقط يك سئوال ميمونه وقتي هاست گفته ASP.NET 2.0 رو پشتيباني ميكنه اين دست و پاي آدمو نميبنده و محدودش نميكنه به استفاده از قابليتهاي موجود در ورژن 2؟ توضيح: (سوء تفاهم نشه يك وقت آهنگ سئوالم بد بود !)

سلام.
متوجه نمیشم این سوال چه ارتباطی با این تاپیک داره... مگه شما می خواهید از چیزی خارج از ASP.NET 2.0 استفاده کنید؟ حدس میزنم در فهم ASP.NET 3.5 و تفاوت بین 2 و 3.5 دچار مشکل شده اید.

ASP.NET 3.5 چیه؟ اسم احمقانه ای برای یک multilayered architecture ای که توسط مایکروسافت ارائه شد. در واقع، ASP.NET 3.5 از همون ASP.NET 2 Engine استفاده میکنه، Configuration File هاش تو همون دایرکتوری قرار میگیرن و ...

ASP.NET 3.5 در واقع مجموعه ای متشکل از CLR 2.0، ASP.NET 2.0 Engine، .NET Framework 2.0 Classes و WPF، WCF، WF بهمراه C#‎ 3.0 و .NET Framework 3.5 (که خودش شامل LINQ و ASP.NET AJAX ای میشه که در اسمبلیهای System.Core.dll، System.Data.Linq.dll، System.Data.DataSetExtensions.dll، System.Web.Extensions.dll و البته، System.Xml.Linq.dll در دسترسن...)

خلاصه کنم، اگر از System.Web.Extensions.dll (برای ASP.NET AJAX) و اون 4 تا فایل دیگه (برای LINQ) استفاده نکنید، همه چی OK هستش و می تونید از تمامی قابلیتهای ASP.NET 2.0 روی سرور میزبان سود ببرید.

اما اگر از LINQ استفاده کنید، اونوقت بناچار باید میزبان شما هم .NET Framework 3.5 رو پشتیبانی کنه، اما دقت کنید که در Control Panel ها، هرگز اسمی از .NET 3.5 نمیبینید. برای اینکه همونطور که گفتم، هر دو از یک Engine استفاده میکنن. برای همین اگر قصد دارید از LINQ استفاده کنید، حتما مطمئن بشید که میزبانتون از نسخه 3.5 پشتیبانی میکنه.

موفق باشید.