【问题标题】:Is it possible to pass an ObjectDataSource to a Web Method through jQuery Ajax?是否可以通过 jQuery Ajax 将 ObjectDataSource 传递给 Web 方法?
【发布时间】:2012-10-15 17:13:27
【问题描述】:

是否可以通过 jquery ajax 将 ObjectDataSource 传递给 Web 方法?

jQuery Ajax:

jQuery.ajax(
{
    type: "POST",
    url: '<%= ResolveUrl("~/Webservices/LoadActivities.asmx/LoadMoreData") %>',
    //data: data,
    data: '{"ObjectDataSource1":' + JSON.stringify(jQuery('<%= ObjectDataSource1.ClientID %>')) + '}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",

});

对象数据源:

        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetActivities" TypeName="MyMethodLocation" >
            <SelectParameters>
                <asp:Parameter Name="top" DefaultValue="10" Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>

Web 方法:(LoadActivities.asmx)

[System.Web.Script.Services.ScriptService]
public class LoadActivities : System.Web.Services.WebService
{

    [WebMethod]
    public void LoadMoreData(ObjectDataSource ObjectDataSource1) 
    {
        // MANIPULATE OBJECT DATA SOURCE
    }
}

如果我没有正确传递对象,则在执行 Web 方法时会显示“对象引用未设置为对象的实例”。

【问题讨论】:

标签: c# asp.net web-services objectdatasource


【解决方案1】:

我不禁认为像这样操作 ObjectDataSource 控件很糟糕。

如果我是对的,您想删除或提高数据源的上限 您的页面上没有完整的回发。

在这种情况下,您应该使用 ObjectDataSource 的内置功能 (例如,使用 ControlParameter 根据控制值设置上限的值 或设置 OnSelecting 事件的上限值) 结合另一种方式来刷新数据(比如用 UpdatePanel 包围 gridview 并在回调中调用 DataBind 方法)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2015-05-16
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多