Answered by:
hyperlink NavigateUrl gridview

Question
-
User-172769993 posted
Hello lets say i have the following link www.asp.net stored in db.
When i click the link from grid-view it redirect me to below path
http://localhost:30987/Main/www.asp.net
Note I am taking user input so i cant add http:// to user input because i cant determine the user website use HTTP or HTTPS
How can i solve this issue ?
<asp:TemplateField HeaderText="Website" SortExpression="Website"> <ItemTemplate> <asp:HyperLink ID="HyperLink1" Target="_blank" Text='<%# Bind("Websitelink") %>' NavigateUrl='<%# Bind("Websitelink") %>' runat="server"></asp:HyperLink> </ItemTemplate> </asp:TemplateField>
Monday, June 27, 2016 2:23 PM
Answers
-
User36583972 posted
Hi asp.net4,
Hello ok with base URL it redirect me to this path http://localhost:30987/Main/www.asp.net instead of www.asp.net
I suggest you can use the following method to implement your needs (use a LinkButton in TemplateField and Redirect to your website in RowCommand method.)
HTML:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Height="217px" Width="223px" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand"> <Columns> <asp:TemplateField HeaderText="ID" FooterStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%#Eval("ID").ToString().ToUpper() %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="link" FooterStyle-HorizontalAlign="Center"> <ItemTemplate> <img id="bannerURL" src='<%#Eval("ImageUrl").ToString().Replace("\\","/")%>' alt="" border="0" class="img" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Website" SortExpression="Website"> <ItemTemplate> <asp:LinkButton ID="btnweblink" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' runat="server" Text='<%#Eval("WebUrl").ToString().Replace("\\","/")%>' CommandName="weblink"></asp:LinkButton> <%-- <asp:HyperLink ID="HyperLink1" Target="_blank" Text='<%#Eval("WebUrl").ToString().Replace("\\","/")%>' NavigateUrl='<%#Eval("WebUrl").ToString().Replace("\\","/")%>' runat="server"></asp:HyperLink>--%> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <br /> <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </div> </form> </body> </html>
ASPX.CS:
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { bind(); } } private void bind() { DataTable tblDatas = new DataTable("Datas"); DataColumn dc = null; dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); dc.AutoIncrement = true;// dc.AutoIncrementSeed = 1;// dc.AutoIncrementStep = 1;// dc.AllowDBNull = false; dc = tblDatas.Columns.Add("Product", Type.GetType("System.String")); dc = tblDatas.Columns.Add("Version", Type.GetType("System.String")); dc = tblDatas.Columns.Add("ImageUrl", Type.GetType("System.String")); dc = tblDatas.Columns.Add("WebUrl", Type.GetType("System.String")); DataRow newRow; for (int i = 0; i < 1; i++) { newRow = tblDatas.NewRow(); newRow["Product"] = "Count" + i.ToString(); newRow["Version"] = "2.0"; newRow["ImageUrl"] = @"http://www.enetgroup.ca/banners/banner1.jpg"; newRow["WebUrl"] = "www.asp.net"; tblDatas.Rows.Add(newRow); } ViewState["dt"] = tblDatas; GridView1.DataSource = tblDatas; GridView1.DataBind(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { switch (e.Row.RowType) { case DataControlRowType.DataRow: case DataControlRowType.Separator: break; } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "weblink") { GridViewRow oItem = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer; int RowIndex = oItem.RowIndex; LinkButton lbl = (LinkButton)oItem.FindControl("btnweblink"); string webvalue = lbl.Text.Trim(); string useput = TextBox1.Text.Trim(); if (useput!=""&& webvalue != "") { string userProvidedUri = useput + webvalue; Uri uri = new Uri(userProvidedUri, UriKind.RelativeOrAbsolute); if (uri.IsAbsoluteUri) { Response.Redirect(userProvidedUri); } } } }
Best Regards,
Yohann Lu
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Tuesday, June 28, 2016 5:05 AM
All replies
-
User-286291038 posted
Hi asp.net4,
I guess you can just take the base URL (Eg: google.com) and let the browser take care of deciding whether to use http or https protocol after it communicates with the server. The browser should be able to communicate with the server and take care of it accordingly.
Monday, June 27, 2016 3:18 PM -
User-172769993 posted
Hello ok with base URL it redirect me to this path http://localhost:30987/Main/www.asp.net instead of www.asp.net
Monday, June 27, 2016 4:53 PM -
User36583972 posted
Hi asp.net4,
Hello ok with base URL it redirect me to this path http://localhost:30987/Main/www.asp.net instead of www.asp.net
I suggest you can use the following method to implement your needs (use a LinkButton in TemplateField and Redirect to your website in RowCommand method.)
HTML:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Height="217px" Width="223px" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand"> <Columns> <asp:TemplateField HeaderText="ID" FooterStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%#Eval("ID").ToString().ToUpper() %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="link" FooterStyle-HorizontalAlign="Center"> <ItemTemplate> <img id="bannerURL" src='<%#Eval("ImageUrl").ToString().Replace("\\","/")%>' alt="" border="0" class="img" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Website" SortExpression="Website"> <ItemTemplate> <asp:LinkButton ID="btnweblink" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' runat="server" Text='<%#Eval("WebUrl").ToString().Replace("\\","/")%>' CommandName="weblink"></asp:LinkButton> <%-- <asp:HyperLink ID="HyperLink1" Target="_blank" Text='<%#Eval("WebUrl").ToString().Replace("\\","/")%>' NavigateUrl='<%#Eval("WebUrl").ToString().Replace("\\","/")%>' runat="server"></asp:HyperLink>--%> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <br /> <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </div> </form> </body> </html>
ASPX.CS:
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { bind(); } } private void bind() { DataTable tblDatas = new DataTable("Datas"); DataColumn dc = null; dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); dc.AutoIncrement = true;// dc.AutoIncrementSeed = 1;// dc.AutoIncrementStep = 1;// dc.AllowDBNull = false; dc = tblDatas.Columns.Add("Product", Type.GetType("System.String")); dc = tblDatas.Columns.Add("Version", Type.GetType("System.String")); dc = tblDatas.Columns.Add("ImageUrl", Type.GetType("System.String")); dc = tblDatas.Columns.Add("WebUrl", Type.GetType("System.String")); DataRow newRow; for (int i = 0; i < 1; i++) { newRow = tblDatas.NewRow(); newRow["Product"] = "Count" + i.ToString(); newRow["Version"] = "2.0"; newRow["ImageUrl"] = @"http://www.enetgroup.ca/banners/banner1.jpg"; newRow["WebUrl"] = "www.asp.net"; tblDatas.Rows.Add(newRow); } ViewState["dt"] = tblDatas; GridView1.DataSource = tblDatas; GridView1.DataBind(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { switch (e.Row.RowType) { case DataControlRowType.DataRow: case DataControlRowType.Separator: break; } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "weblink") { GridViewRow oItem = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer; int RowIndex = oItem.RowIndex; LinkButton lbl = (LinkButton)oItem.FindControl("btnweblink"); string webvalue = lbl.Text.Trim(); string useput = TextBox1.Text.Trim(); if (useput!=""&& webvalue != "") { string userProvidedUri = useput + webvalue; Uri uri = new Uri(userProvidedUri, UriKind.RelativeOrAbsolute); if (uri.IsAbsoluteUri) { Response.Redirect(userProvidedUri); } } } }
Best Regards,
Yohann Lu
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Tuesday, June 28, 2016 5:05 AM