Click here to Skip to main content
15,920,633 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a webpage that where I display an asp grid filled with data from a sql server database and a Leaflet map below it. What I would like to do is have the user click on an item in the grid, then put a pin on the Leaflet map showing data based on the chosen item.

The problem that I am having is that the function that should be setting the pin does not appear to be called.

What I have so far is this code for my aspx file:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="VB.aspx.vb" Inherits="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Leaflet Web Map</title>

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />

<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>

<style>
#map {
    width: 100%;
    height:500px;
}
</style>

</head>

<body>
    <form id="frmACDC" runat="server">
<div style="text-align: center;">
                <asp:Label ID="ACDCHdr" runat="server" Font-Names="Georgia,Times New Roman" 
							ForeColor="Blue" Font-Size="36pt">ACDC</asp:Label>
			<hr/>
</div>
<div>
	<tr>
          <td align="center" style="padding: 50px">		
		  <div style="width: 100%; text-align=center;">		  
			<asp:GridView ID="gvF25" runat="server" AllowPaging="True" 
              AutoGenerateColumns="False" PageSize="12" AllowSorting="True" CellPadding="2" 
              CellSpacing="2" HorizontalAlign="center" Width="50%">
              <Columns>						
				<asp:ButtonField ButtonType="Link"  DataTextField="Reference_Number" CommandName="SelectRef" HeaderText="Reference Number" ItemStyle-Width="19%" />
                <asp:BoundField DataField="From_PS" HeaderText="State Code" ReadOnly="true" ItemStyle-Width="9%"/>
			 </Columns>
			<HeaderStyle BackColor="#E6E6FA" Font-Bold="True" />			 
            </asp:GridView>	
	<HeaderStyle BackColor="#E6E6FA" Font-Bold="True" />		
	</asp:GridView>
		    <asp:Label ID="lblJava" runat="server" ForeColor="Blue" Font-Bold="true"></asp:Label>
	</td>
	</tr>

</div>	

    <div id="map" ></div>
<script language=javascript>

    var map = L.map('map',{zoom: 15});
	map.setView(new L.LatLng(59.334591, 18.063240),5);
    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);
	
	var marker = L.marker([59.334591, 18.063240]).addTo(map).bindPopup("Here").openPopup();

	function SetMap(Lat, Long, strText) {
	map.setView(new L.LatLng(Lat, Long),5);
	marker = L.marker([Lat, Long]).addTo(map).bindPopup(strText).openPopup();

	}
	
</script>
	</form>
</body>

</html>


and then my code behind:

Imports System.Data.SqlClient
Imports System.Data

Partial Class VB
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not IsPostBack Then
            gvF25.DataSource = GetData("select Reference_number, From_PS from F25_master")
            gvF25.DataBind()
        End If
    End Sub

    Private Shared Function GetData(query As String) As DataTable
        Dim strCON = "Server=MyServer;Database=MyDB;Uid=xxx;Pwd=xxx;MultipleActiveResultSets=true"
        Using con As New SqlConnection(strCON)
            Using cmd As New SqlCommand()
                cmd.CommandText = query
                Using sda As New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using ds As New DataSet()
                        Dim dt As New DataTable()
                        sda.Fill(dt)
                        Return dt
                    End Using
                End Using
            End Using
        End Using
    End Function

  Public Sub gvF25_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles gvF25.RowCommand
    Dim intRow As Integer
    Dim ex As exception
    Dim strMessage As String
    Dim selRow As GridViewRow
    Dim cellText As TableCell
    Dim btn As LinkButton
	Dim strText as string

    Try
        If e.CommandName = "SelectRef" Then
            introw = Convert.ToInt32(e.CommandArgument)
            selRow = gvF25.rows(intRow)
            btn = selRow.Cells(0).Controls(0)
            cellText = selRow.Cells(1)	

			if introw = 0 then
				System.Web.UI.ScriptManager.RegisterStartupScript(Me, [GetType](), "check_Javascript", "SetMap(59.334591, 18.063240,First Text);", True)
			else
				System.Web.UI.ScriptManager.RegisterStartupScript(Me, [GetType](), "check_Javascript", "SetMap(59.334591, 18.063240,Different Text);", True)					
			end if
        End If
    Catch ex
      'Me.lblerror.text = "An error has occured. Please have TK admin review the error log."
    End Try
End Sub

End Class


What I have tried:

I have tried putting the script into a label but that doesn't work either. Like this:

Me.lblJava.Text = "<script type='text/javascript'>SetMap(59.334591, 18.063240,Different notfif);</script>"	
Posted
Updated 18-Nov-17 15:08pm

1 solution

Pass the string value inside quotes
System.Web.UI.ScriptManager.RegisterStartupScript(Me, [GetType](), "check_Javascript", "SetMap(59.334591, 18.063240,'First Text');", True)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900