مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

laleh_456

عضویت از 1395/10/06

سرچ در جدول ایجکسی بصورت drag&drop

  • شنبه 23 اردیبهشت 1396
  • 14:57
تشکر میکنم

سلام دوستان

من به اموزش موجود در وبسایت درباره درگ و دراپ متد سرچ اضافه کردم. تازمانیکه کلمه ای سرچ میکنم و بعد درگ رو انجام میدم همه چی درست و مرتبه.ولی زمانیکه چندین بار تایپ کنم و پاک کنم بعد محصولی رو اضافه کنم به تعداد دفعاتی که به تابع getdata بصورت ajax وصل شدم همون کلمه درگ میشه.مثلا اگر دوبار جستجو انجام داده باشم کلمه ای رو که درگ میکنم دوبار نمایش میده نه یکبار.

ممنون

کد ویو:


@{
    ViewBag.Title = "SelectStuff";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}

<style type="text/css">
    table, td {
        background-color: azure;
        border: double;
    }

    #dvright, #dvleft {
        background-color: azure;
        height: 200px;
        width: 300px;
    }
</style>
<table>
    <tr>
        <td>
            <h1>Product List</h1>
        </td>
        <td>
            <h1>Selected Products</h1>
        </td>
    </tr>
    <tr>
        <td>
            <div id="dvleft">
                <ul id="lstproducts"></ul>
            </div>
        </td>
        <td>
            <div id="dvright">
                <ul id="lstselectedproducts"></ul>
            </div>
        </td>
    </tr>
</table>

@section scripts{

    <script type="text/javascript">
        $(document).ready(function () {

            loadProducts();

            //Function to set events for Drag-Drop
            function setEvents() {
                var lstProducts = $('li');
                //Set Drag on Each 'li' in the list
                $.each(lstProducts, function (idx, val) {
                    $('li').on('dragstart', function (evt) {
                        evt.originalEvent.dataTransfer.setData("Text", evt.target.textContent);
                        evt.target.draggable = false;
                    });
                });

                //Set the Drop on the <div>
                $("#dvright").on('drop', function (evt) {
                    evt.preventDefault();
                    var data = evt.originalEvent.dataTransfer.getData("Text");
                    var lst = $("#lstselectedproducts");
                    var li = "<li>" + data + "</li>" + "<input type='text'/>";
                    li.textContent = data;
                    lst.append(li);
                });

                //The dragover
                $("#dvright").on('dragover', function (evt) {
                    evt.preventDefault();
                });
            }

            ///Function to load products using call to WEB API
            function loadProducts() {
                var items = "";
                $.ajax({
                    url: "/Admin/SelectStuff2",
                    type: "GET",
                }).done(function (resp) {
                    $.each(resp, function (idx, val) {
                        items += "<li draggable='true'>" + val.Name+val.Id+ "</li>";
                    });
                    $("#lstproducts").html(items);
                    setEvents();
                }).error(function (err) {
                    alert("Error! " + err.status);
                });
            }
        });
</script>
}

کد getdata:

   public ActionResult  GetData(string str)
        {
            
         var   query1 = (from p in db.Stuffs
                      orderby p.Id ascending
                      where p.Name.Contains(str)
                      select p).Take(10);
               var  query2 = (from p in db.Stuffs
                             orderby p.Id ascending
                             select p);
               if (str == "")
               {
                   return Json(query2.ToList(), JsonRequestBehavior.AllowGet);
               }
               else
               {
                   return Json(query1.ToList(), JsonRequestBehavior.AllowGet);
               }
        }

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 23 اردیبهشت 1396
  • 18:29

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

کد ها رو هم دیدم و به نظر درست میاد

باید کدهاتون رو Trace کنید تا متوجه خطا بشید

کاربر سایت

laleh_456

عضویت از 1395/10/06

  • شنبه 23 اردیبهشت 1396
  • 19:42

ممنون

من چطور میتونم کدهای ajax رو trace کنم؟

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

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 24 اردیبهشت 1396
  • 09:59

میتونید از فایرباگ استفاده کنید

البته ابراز های دیگه ای هم هست که اسمشون خاطم نیست

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)