ایجاد نظر سنجی تودرتو با Asp.Net
0 0

ایجاد نظر سنجی تودرتو با Asp.Net


ایجاد نظر سنجی تودرتو با Asp.Net

در این پست قولی که به دوستان داده بودیم نحوه نمایش و پاسخ دهی به نظرات تودرتو را آماده کردیم.

در بسیاری از سایت ها دیده اید. هنگامی که نظر ثبت می کنید می توانید به همان نظر نیز جواب دهید و همچنین به جواب نظر نیز می توانید نظر دهید.

در پست های قبلی آموزش نحوه نمایش و پاسخ دهی به نظرات تودرتو را در PHP و MVC 5 را قرار داده بودیم و توصیه می کنیم که به این آموزش ها نگاهی بکنید.  در اینجا مد نظر ما آموزش ایجاد نظرات تودرتو با MVC 5 است.

در اینجا روشی که ما توضیح می دهیم یک روش ساده و کاربردی است و شما با جستجو (جستجو در سایت خارجی) در اینترنت می توانید روش های دیگری برای این کار پبدا کنید.

طراحی جدول

ابتدا باید یک جدول در دیتابیس ایجاد کنید. فیلد های این جدول به صورت زیر می باشند.

ایجاد نظر سنجی تودرتو با Asp.Net

CommentId

آی دی جدول که به صورت یک کلید اصلی تعریف می کنیم

ParentId

کلید خارجی جدول که بصورت نال تعریف شده

نکته مهم

ما در این جدول با استفاده از این فیلد یک ارتباط داخلی یک به چند با کلید اصلی بر قرار می کنیم تا بتوانیم با استفاده از این فیلد به نظرات پاسخ تودرتو دهیم.

Name

فیلد نام کاربر نظر دهنده

Email

فیلد ایمیل کاربر نظر دهنده

Comment

فیلد نظر کاربر

InsertDateTime

 تاریخ و ساعت ثبت نظر را ثبت می کنیم.

بعد از تعریف جدول نوبت به ثبت نظر می رسد.

توضیحات مربوط به ثبت  نظر را از پست MVC 5 رو مطالعه کنید.

نحوه نمایش نظرات

متد CallDisplayComment

private void CallDisplayComment()
    {
        DataSet ds = new DataSet();
        SqlConnection con = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=NestedComment;Data Source=.;MultipleActiveResultSets=True");
        SqlDataAdapter da = new SqlDataAdapter("Select * From Comments", con);
        da.Fill(ds);

        DataTable comment = ds.Tables[0];

        DataRow[] parentComments = comment.Select("ParentId = 0");

        var sb = new StringBuilder();
        string result = DisplayComment(parentComments, comment, sb);

        litDisplayComment.Text = result;
    }

برای نمایش نظرات ابتدا یک متد به نام CallDisplayComment تعریف می کنیم و نظراتی که parentId آنها برابر صفر است را از جدول کامنت می خوانیم و در یک DataRow قرار می دهیم و سپس متد DisplayComment را فراخوانی می کنیم.

متد DisplayComment یک رشته را بر میگرداند و رشته بازگشتی را در یک متغیر به نام result قرار می دهیم و سپس مقدار آن را در Literal ی که در صفحه aspx تعریف کردیم قرار می دهیم.

متد DisplayComment

private string DisplayComment(DataRow[] parentComments, DataTable table, StringBuilder sb)
    {
        sb.AppendLine("<ul>");

        if (parentComments.Length > 0)
        {
            foreach (DataRow dr in parentComments)
            {
                string name = dr["Name"].ToString();
                string insertDateTime = dr["InsertDateTime"].ToString();
                string comment = dr["Comment"].ToString();
                sb.Append("<li>");
                string allComment = String.Format("<div class='child'><div>{0}</div><div>{1}</div><div>{2}</div><div class='btnReplay'><a href='#insertCommentForm' id='btnReply_{3}' >پاسخ</a></div></div>",
                    name, insertDateTime, comment, dr["CommentId"].ToString());
                sb.Append(allComment);

                string commentId = dr["CommentId"].ToString();

                DataRow[] subComment = table.Select(String.Format("ParentId = {0}", commentId));
                if (subComment.Length > 0)
                {
                    var subCommentBuilder = new StringBuilder();
                    sb.Append(DisplayComment(subComment, table, subCommentBuilder));
                }
                sb.Append("</li>");
            }
        }

        sb.Append("</ul>");
        return sb.ToString();
    }

این متد سه ورودی دریافت می کند.

نکته مهمی که باید در این کد به آن توجه کنید نحوه نمایش لینک پاسخ است که به صورت یک تگ a تعریف شده و id نیز برابر _btnReply و شماره کامنت قرار دادیم.

نحوه کار این متد به صورت یک متد بازگشتی است به این صورت که بعد از نمایش کامنت بررسی می کنیم که آیا این کامنت پاسخی دارد در این صورت متد DisplayComment را دوباره فراخوانی می کنیم.

در سورسی که برای دانلود قرار داده ایم ثبت کامنت و نمایش آنها به صورت کامل کد نویسی شده و فایل دیتابیس برنامه نیز کنار آن قرار داده ایم.

دانلود

نویسنده حسین فتحی
گروه مطلب Asp.Net
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۲۴ خرداد ۱۳۹۴
منبع ایران گنج
تعداد نظرات ۱۱
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.
خرید VIP
امکان خرید از درگاه های بانکی و حساب مجازی

برای دانلود بعد از خرید به همین صفحه برگردید تا لینک های دانلود نمایش داده شود

نظر / سوال

Captcha
نظرات کاربران

  • ali

    سلام چجوری با استفاده از code first در asp.net core میشه نظرتودرتو ساخت؟ مخصوصا اونجا که باید commentid و parentid رو که هر دو تو ی جدول هستن به هم مرتبط کرد ؟

    پاسخ
  • محبوبه

    سلام چطوری میشه به جز پاسخ ، هر کاربر بتونه نظر خودشو حذف کنه؟ یعنی دکمه حذف هم باشه.ممنون میشم راهنماییم کنید.

    پاسخ
    • مدیر

      با سلام و درود

      در این صورت باید کاربر عضو سایت باشد و هنگام ثبت نظر آی دی کاربر رو ثبت کنید و هنگام نمایش نظرات در صورتی که کاربر لاگین کرده بود دکمه حذف رو برای نظرات کاربر لاگین شده نمایش دهید.

      پاسخ
      • محبوبه

        کاربرا لاگین میشن چون پرتال داخلی هست، بلد نیستم تو این کد چطوری حذف رو بزارم مثل لینک پاسخ ، کد حذف رو بلدم فقط نمیدونم چطوری مثل پاسخ باید تو کدم بزارم و تشخیص بده برای کاربر لاگین فقط حذفو نشون بده .

        پاسخ
        • مدیر

          با سلام و درود

          هنگام نمایش نظر بررسی کنید که این نظر برای کاربر لاگین کرده است یا نه و بعد دکمه حذف رو نمایش دهید.

          برای دکمه حذف هم به از Ajax استفاده کنید.

          پاسخ
    • علی

      عالی بود

      پاسخ
  • محبوبه

    سلام

    http://iranganj.ir/asp/10357/آموزش-پیاده-سازی-نظرات-تو-در-تو-به-صورت-ajax-در-صفحات-asp-netتو این نظر سنجی اگه بخواییم از repeater یا gridview به جای litDisplayComment استفاده کنیم چطوری میشه کد رو تغییر داد ؟ ممنون میشم راهنماییم کنید.

    پاسخ
    • مدیر

      با سلام و درود

      آموزش ایجاد نظرات تودرتو با استفاده از repeater در Asp.Net را ببیند.

      پاسخ
  • محبوبه

    با سلام و خسته نباشید ، من از این نظر سنجی استفاده کردم خیلی برام قابل استفاده است.فقط چطوری میشه like به literaltext اضافه کرد که بشه نظری رو لایک کرد؟

    پاسخ
    • مدیر

      با سلام و درود 

      آموزشی تحت اضافه کردن لایک و دیس لایک به مطالب در Asp.net در سایت وجود دارد می توانید از این آموزش استفاده کنید

      پاسخ