Editable Hyperlink Column

VBAHole22

Contributor
Joined
Oct 21, 2003
Messages
432
Location
VA
I have a datagrid that has 3 columns that i have set up for the user to edit. One of the columns contains a URL. I have it set up where they can edit the URL but they can't actually click on it and navigate to it. I would like that functionality without losing the editing capabilities. So right now I have 2 issues: 1) all of the hyperlinks, when clicked, lead to relative paths and not absolute urls, so they fail and 2) when the hyperlink is clickable I lose the ability to edit it.

Here is what I started with. This has al fields editable but the hyperlink is just a url, not a hyperlink (you can't click it):
Code:
<Columns>
<asp:BoundColumn DataField="field_name" ReadOnly="True" HeaderText="Field Name"></asp:BoundColumn>
<asp:BoundColumn DataField="display_order" HeaderText="Display Order"></asp:BoundColumn>
<asp:BoundColumn DataField="hyperlink_value" HeaderText="Hyperlink"></asp:BoundColumn>
<asp:BoundColumn DataField="alias" HeaderText="Alias"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="<img src=./images/spell.ico border=0 align=absmiddle alt='Save changes'  height=35 >" CancelText="<img src=./images/stop.ico border=0 align=absmiddle alt='Cancel editing'  height=35 >" EditText="<img src=./images/write.ico border=0 align=absmiddle alt='Edit this item'  height=35 >"></asp:EditCommandColumn>
</Columns>


Then I tried to change that column to a hyperlinkColumn like so:

Code:
<asp:HyperLinkColumn DataTextField="hyperlink_value" DataNavigateUrlField="hyperlink_value" DataNavigateUrlFormatString="{0}" HeaderText="Hyperlink"></asp:HyperLinkColumn>

That gets me a hyperlink but I lose the ability to edit and when a user clicks on a hyperlink like www.cnn.com they get directed to http://localhost/mydir/www.conn.com which, as you can imagine, fails.

The last thing I tried was:

Code:
	<asp:TemplateColumn HeaderText="Link">
		<ItemTemplate>
		<asp:HyperLink Runat =server 
		NavigateUrl ='<%#GetURL(DataBinder.Eval(Container.DataItem, "Link"))%>' >
		<%#DataBinder.Eval(Container.DataItem, "Link")%>
		</asp:HyperLink>
		</ItemTemplate>
	</asp:TemplateColumn>

Along with

Code:
		public string GetURL (string fldval)
		{
			if (fldval.IndexOf("http://") > 0)
			{
				return fldval;
			}
			else
			{
				return "http://" + fldval;
			}
		}

But that didn't work either.
Can this be done? Any suggestions?
 
Back
Top