cotsjdixon Ответов: 1

Как я могу вызвать javascript из VB.NET код позади


У меня есть веб-страница, на которой я отображаю сетку asp, заполненную данными из базы данных sql server, и карту листовок под ней. Я бы хотел, чтобы пользователь щелкнул по элементу в сетке, а затем поставил булавку на карту листовки, показывающую данные, основанные на выбранном элементе.

Проблема, с которой я сталкиваюсь, заключается в том, что функция, которая должна устанавливать pin-код, по-видимому, не вызывается.

То что у меня есть до сих пор это код для моего файла aspx:
<%@ 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>


а потом мой код позади:

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


Что я уже пробовал:

Я пытался поместить сценарий в ярлык, но это тоже не работает. Подобный этому:

Me.lblJava.Text = "<script type='text/javascript'>SetMap(59.334591, 18.063240,Different notfif);</script>"	

1 Ответов

Рейтинг:
9

Karthik_Mahalingam

Пройдите мимо string значение внутри quotes

System.Web.UI.ScriptManager.RegisterStartupScript(Me, [GetType](), "check_Javascript", "SetMap(59.334591, 18.063240,'First Text');", True)