Add URL hyperlink to a single cell in an AG-Grid Table

Hello

Is it possible to add a hyperlink to a single cell in an AG-Grid Table, using streamlit-aggrid? I have previously used the following code to create clickable hyperlinks for all cells within a column, but I am not sure how to do it for a single cell in a column.

cellRenderer = JsCode(
“”“function(params) {return <a href=${params.value} target="_blank">${params.value}</a>}”“”
)
gb.configure_column(cellRenderer=cellRenderer)

Any advice would be greatly appreciated!

Thanks and best wishes

John

Hi,

Your concept is correct: create the cellRenderer as JsCode and then pass it in to ‘configure_column’ as the cellRenderer param, and you do have to say which column you are configuring.

There is a syntax error in the JS in the post, I don’t know if that was a copy and paste error or if that is contributing to your issue?

e.g.

cell_renderer =  JsCode("""
function(params) {return `<a href=${params.value} target="_blank">${params.value}</a>`}
""")

gb.configure_column("apple", cellRenderer=cell_renderer)
3 Likes

Hi Alan

Many thanks for your reply. Sorry - I think that was a cut and paste error.

I have no problem configuring a whole column so that all entries are hyperlinks. However, my problem is that I would like to designate a single cell within the column as a hyperlink. (None of the other cells in the column are hyperlinks). Do I still need to use configure_column or should this be done in a different way?

Many thanks

John

Sorry I misread your question.

It is possible but it would be done using other properties in the params either for a specific value, or if the cell was part of the row.

the params provides access to the full grid API and the column API so you can use that to conditionally decide to return html for a link or for just the value:

AG Grid also has the concept of cellRendererSelectors

Which allow use of different selectors, with the condition being performed at the selection stage rather than in the cellRenderer itself.

But… AG Grid does not have a way of assigning a specific cellRenderer to a specific cell, the cellRenderer or cellRendererSelector would use the APIs or the values in params like the rowNode, data, column definition etc. to decide what rendering to use.

So you might look at the value and if it can be converted to a URL without throwing an exception new URL(string) then return the <a>...</a> otherwise just return the params.value.

1 Like

Hi Alan

OK, that makes sense - many thanks for the clear explanation. I will try to do as you suggest.

Best wishes

John

I am able to create link in agarid column using bellow code. Is it possible in href instead of “https://www.google.com” we can call our python method

from st_aggrid import JsCode
   
gb.configure_column("link",
                            headerName="Link",
                            cellRenderer=JsCode('''function(params) {return '<a href="https://www.google.com">params.value</a>'}'''),
                            width=300)

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.