Web方法背后的ASP.NET代码

时间:2014-06-29 04:30:41

标签: c# asp.net sql gridview

基本上我试图通过使用Web服务来过滤一些结果。这是我的HTML代码,我在js文件中动态添加了组件:

htmlStr += "<div id='filterContent'><input type='checkbox' id='cbShowAllBus' onClick='getAllBusStop();' /><span class='getBusRouteSubtitle'>Show All Bus Stops</span><br/><br/>";

htmlStr += "<span class='getBusRouteTitle'>Bus Services No.</span><br/>";
htmlStr += "<select id='busservice_option' onchange='filterBusStop(this.value);getFilteredBusStop();' style='width:100%;'><option value='default'>Select Bus Service</option><optgroup label='Trunk Bus Services'><option value='2_2'>2</option><option value='3_2'>3</option><option value='4_1'>4</option></optgroup></select>";

htmlStr += "</div><br/>";

我有复选框和下拉列表。因此,如果选中复选框,它将显示所有公共汽车站位置,而没有任何过滤条件。

我所做的是从代码背后,我调用执行SQL语句的Web服务方法。然后我将结果绑定到网格视图中,并从网格视图中提取结果。我不会发布这些函数的代码,因为它工作正常。

我尝试过滤结果时出现问题。我使用了与上面相同的技术。这是我的asp.net代码,用于执行SQL语句并将结果绑定到网格视图:

[System.Web.Services.WebMethod()]
    public void filterBusStop(String filter)
    {
        SgDataService filterBusStop = new SgDataService();

        filterBusStopDGV.DataSource = filterBusStop.GetFilterBusStop(filter);
        filterBusStopDGV.DataBind();

    }

我的Web服务方法包含SQL语句:

[WebMethod]
    public DataSet GetFilterBusStop(String filter)
    {
        SqlConnection sqlConnection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["EasyMoveConnStr"].ConnectionString);
        string select = "select * from dbo.BusStop where B1 LIKE %" + filter + "%";
        sqlConnection1.Open();
        SqlDataAdapter da = new SqlDataAdapter(select, sqlConnection1);
        DataSet ds = new DataSet();
        da.Fill(ds, "FilterBusStop");
        sqlConnection1.Close();
        return (ds);
    }

在将数据填充到gridview之后,我循环通过gridview并使用lat long将每个结果绘制成一个地图:

function getFilteredBusStop() {
var Grid_Table = document.getElementById('filterBusStopDGV');
    for (var i = 1; i < Grid_Table.rows.length; i++) {
        var coordXicon = Grid_Table.rows[i].cells[4].textContent;
        var coordYicon = Grid_Table.rows[i].cells[5].textContent;
        var B1 = Grid_Table.rows[i].cells[6].textContent;
        var B2 = Grid_Table.rows[i].cells[7].textContent;

        var point = new esri.geometry.Point({ "x": coordXicon, "y": coordYicon, "spatialReference": { "wkid": 3414 } });
        if (B2 == 1) {
            var symbol = new esri.symbol.PictureMarkerSymbol('img/busIcon.png', 30, 30);
        }
        else {
            var symbol = new esri.symbol.PictureMarkerSymbol('img/busstopicon.png', 30, 30);
        }
        var PointGraphic = new esri.Graphic(point, symbol);
        map.graphics.add(PointGraphic);

        var infoTemplate = new esri.InfoTemplate();

        infoTemplate.setTitle(Grid_Table.rows[i].cells[1].textContent);

        infoTemplate.setContent("<b>Bus Stop Location: </b>" + Grid_Table.rows[i].cells[2].textContent + "<br/>"
        + "<b>Road Name: </b>" + Grid_Table.rows[i].cells[3].textContent + "<br/>"
        + "<b>Buses: </b>" + B1 + "<br/>");

        var graphic = PointGraphic;
        graphic.setSymbol(symbol);
        graphic.setInfoTemplate(infoTemplate);
        busIcon.push(map.graphics.add(graphic));
    }
}

但不知何故,我收到一条错误消息filterBusStop is undefined。我认为问题发生在下载列表中的onchange时,我以错误的方式调用了Web服务方法背后的代码。任何指南?

提前致谢。很抱歉超长线程,因为我想解释我想要做什么。

1 个答案:

答案 0 :(得分:0)

我不知道在onchange事件中打两个电话,所以我现在就离开了。

scriptmanager是否具有EnablePageMethods =&#34; true&#34;? 如果是这样,请尝试将方法设为静态。 你可能要做两件事。