Tooltip In Grid View

[right][font="Tahoma"]با سلام

من میخوام داخل یک گریدویو ، با کلیک کردن روی هر ستون از یک ردیف ، یک تولتیپ که توضیحات اون با ایجکس پر میشه استفاده کنم.

کد زیر رو ابتدای

protected/view/show/admin

قرار دادم




<link rel="stylesheet" type="text/css" href="http://craigsworks.com/projects/qtip2/packages/latest/jquery.qtip.min.css" />

<script type="text/javascript" src="http://craigsworks.com/projects/qtip2/packages/latest/jquery.qtip.min.js"></script>

<script>

$(document).ready(function()

{

    toolt_tip();

});

 

function toolt_tip(){

    $('.tool_tip').each(function() { 

        $(this).qtip({

            content:{

                text: '456456',

                ajax: {

                    // Use the rel attribute of each element for the url to load

                    url: $(this).attr('rel')

                },

                title: {

                    // Give the tooltip a title using each elements text

                    text: 'Ticket - ' + $(this).text(), 

                    button: true

                }

            },

            position: {

                at: 'bottom center', 

                my: 'top center',

                viewport: $(window), 

                effect: false 

            },

            show: {

                event: 'click',

                solo: true 

            },

            hide: 'unfocus',

            style: {

                classes: 'qtip-wiki qtip-light qtip-shadow'

            }

        })

    })

    .click(function(event) { event.preventDefault(); });

}





</script>






و ستون مورد نظر رو به شکل زیر نوشتم




            array(

                'name'=>'first',

				'header'=>'first',

                    'type' => 'raw',

   'value' => 'CHtml::link($data->getIdcoller1(),

        CHtml::normalizeUrl("javascript:void(0)"),

        array(

            "id" => "'.rand(0,999999).'",

            "rel" => "Viewamount?even_id={$data["id"]}&cdr_id= {$data["first"]}",

            "class" => "tool_tip",

        )

    )',


        

                ),



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

ممنون میشم منو راهنمایی کنید. احتمال میدم باید متغیر

afterAjaxUpdate

رو توی گرید تنظیم کنم ، اما نمیدونم چه طوری.

مرسی

[/font][/right]

[right][rtl][font="Tahoma"]

سلام

منم یه بار با مورد مشابهی برخورد داشتم، ولی جای tooltip از popover استفاده کرده بودم. منتها تاثیری تو مساله نداره و در هر دو مورد بعد از اینکه گرید آپدیت میشه، دیگه مثل اول کار نمیکنه

راهش همون هست که شما گفتید، باید afterAjaxUpdate رو ست کنید

[/font][/rtl][/right]




$this->widget('bootstrap.widgets.BootGridView', array(

        ...

	'afterAjaxUpdate' => 'js:function(){setPopovers()}',

        ...

        )



[right][rtl][font="Tahoma"]

اینجا من گفتم بعد از آپدیت اون تابع js که نوشتم رو صدا بزنه، اون تابع با استفاده از selector اون element هایی که باید popover میشدن رو انتخاب میکنه و دوباره کد لازم رو روشون اجرا میکنه

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

[/font][/rtl][/right]




function setPopovers () {

     $('.popover').popover(option);  // this is not the real code! just the logic behind it

}



[right][rtl][font="Tahoma"]

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

[/font][/rtl][/right]

مرسی از راهنمایی تون