Cgridview فیلتر با Keyup

[rtl][font="Tahoma"]سلام دوستان ، می خوام موقع سرچ تو گریدویو بدون نیاز به enter و همزمان با رویداد keyup داده های gridview برام filter بشه .

چند تا آموزش دیدم که ظاهرا کاملترین شون این لینک بود

اینم کدی که نوشتم :

[/rtl][/font]


<?php

Yii::app()->clientScript->registerScript('keyupfilter',"

   $( document ).ready(function() {

        $('body').on('keyup', '.filters > td > input', function() {

            var focusedId = $(document.activeElement).attr('id');

            var grid_id = $('#' + focusedId + '.form').closest(\"div\").attr('id');


            $('#' + grid_id).yiiGridView('update', {

                data: $(this).serialize(),

                complete: function(jqXHR, status) {

                    if (status == 'success') {

                        var tmpStr = $('#' + focusedId + '.form').val();

                        $('#' + focusedId + '.form').focus();

                        $('#' + focusedId + '.form').val('');

                        $('#' + focusedId + '.form').val(tmpStr);

                    }


                }

            });

           return false;

        });

   });

    ",CClientScript::POS_END);

?>

[rtl][font="Tahoma"]

ظاهرا قسمت update اجرا نمیشه چون وقتی به جای ‘#’ + grid_id آی دی فرم ام رو گذاشتم قسمت آپدیت فعال شد ولی cursor روی فیلد فعال برنمیگرده

[/rtl][/font]

[rtl][font=“Tahoma”]یعنی هیچکس چنین مشکلی نداشته !! :huh:

یا هیچ نظر خاصی ندارید راجع به این موضوع !! :)

[/font]

[/rtl]

[right][rtl][/right][right][font="Tahoma"]چند تا grid توی صفحه دارید؟[/font][/right][right][/rtl][/right]

[rtl]یکی

برای شما این کد کار میکنه ؟؟

شاید جای درستی نذاشتمش

توی view -> admin نوشتمش[/rtl]

[right][rtl]

[/right][right][font="Tahoma"]اگر فقط یکی هست که به نظر من این همه کد اضافیه . بالاخره شما id این grid رو حتما دارید دیگه نیازی به grid_id و … نیست

فرض کنیم id گرید باشه myGrid اونوقت این کد رو امتحان کنید:[/font]

[/rtl]

[left]


Yii::app()->clientScript->registerScript('keyupfilter',"

   $( document ).ready(function() {

        $('body').on('keyup', '#myGrid .filters > td > input', function() {            

            $('#myGrid').yiiGridView('update', {

                data: $(this).serialize()

            });

       	return false;

        });

   });

    ",CClientScript::POS_END);

[/left][/right]

[rtl][font="Tahoma"]منظورم این بود تو اون ویو فقط یک گرید ویو دارم

حالا فرض کنیم یک گرید داشته باشم این کد هم درست ولی مشکل اینه که می خوام مکان نما برگرده روی همون فیلد قبلی

اگر دقت کنید با این کد هر کلمه که وارد می کنیم باید با ماوس کلیک کنید روی فیلدی که می خواهید فیلتر بشه بعد باز دوباره کلمه ی بعدی رو وارد کنیم و اینجوری خیلی ضایعه !! :)

[/font][/rtl]

[right][rtl][/right][right][font="Tahoma"]حالا با این توضیحات شما اون کدها یه خورده معنی پیدا کرد [/font][/right][right][font="Tahoma"]در این صورت همون کد خودت رو با یک id مشخص دوباره بنویس[/font][/right][right][font="Tahoma"]در ضمن من الان سریع تست کردم باید اینجوری فیلترها رو select کرد علامت کوچکتر یعنی فرزند مستقیم که اینجا صدق نمیکنه[/font][/right][right][/rtl][/right][left]


#myGrid .filters td input

[/left]