Cfgrid ячейка содержит гиперссылку? - PullRequest
1 голос
/ 14 июля 2011

Использование CF9 и довольно простая html cfgrid, которая возвращает результаты SQL-запроса.

В сетке всего два столбца: "ID" и "IDType".

IЯ смотрю, есть ли способ реализовать некоторую логику, чтобы при появлении определенного IDType значение в поле ID становилось ключевым значением в гиперссылке.

Пример: IF IDType = "web"и идентификатор «1234», значение в поле идентификатора будет отображаться как http: /www.website.com/1234.html (или ... лучше: просто отображается как «1234», но с поддержкой гиперссылок)чтобы перейти на вышеупомянутый сайт.)

Если IDType не является (например) "web", то значение просто отображается как обычное значение ячейки (текст).

                   <cfgrid
                        name="idGrid"
                        title="Related IDs"
                        query="get_IDs"
                        format="html"
                    >
                        <cfgridcolumn name="ID" header="ID" />
                        <cfgridcolumn name="IDType" header="ID Source" />

                    </cfgrid>

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Вы можете сделать это с помощью функции onRender javascript.

var gridRender = function()
{
var grid = ColdFusion.Grid.getGridObject('gridname');
var cm = grid.getColumnModel();
cm.setRenderer(0,renderFun); //first arguments stands for column number
}

var renderFun = function(value, cellMeta, record, row, col, data)
{
if(value != null)
{
    switch(col)
    {
        case 0:
            return "<a href='yoururl?id=" & value & "'>" & value & "</a>";      
        default:
            return value;
    }

}
};

И на странице Coldfusion вызовите функцию gridRender для ajaxonload

<cfset ajaxOnLoad("gridRender")>

ajaxOnLoad автоматически вызовет функцию gridRender js на загруженной странице инастроить сетку для рендеринга через функцию gridRender.renderFun будет вызывать каждый раз, когда ваша ячейка столбца будет визуализироваться.

Примечание: я не тестировал код, просто считаю его тестовым кодом и изменяю его в соответствии с вашими потребностями.

0 голосов
/ 14 июля 2011

Один из способов сделать это состоит в том, что вы можете сгенерировать и добавить столбец к вашему запросу с помощью функции queryColumnAdd (), поместить вашу ссылку в ячейку и затем отправить измененный запрос в cfgrid.

Ссылка будет отображаться, и вы можете нажать на нее!

Если я могу использовать псевдокод .. сначала напишите ваш обычный запрос

<cfquery name = "myQuery"  datasource = "myCFDatasource">
   SELECT ID, field1, field2, field3
   FROM aTable
</cfquery>

Далее мы добавим вашу ссылкустолбец на него ..

<cfset queryAddColumn(myQuery, "Link", ArrayNew(1)) />

<cfloop query="myQuery">
    <cfset querySetCell(myQuery, "Link", "http://www.mysite.com/some/index.cfm?ID=#myQuery.ID#"), myQuery.currentRow) />
</cfloop>

Затем вы можете взять измененный запрос myQuery и отправить его в свою cfgrid, как вы делали выше.

Надеюсь, что это поможет вам выбрать правильный путь.., работал хорошо для меня в последний раз, когда я использовал его!

...