我有调用ASP.NET中的方法的JavaScript代码。基本上,我有SqlDataSource
与GridView
相关联,我想更改SelectCommand
的{{1}}而不会导致回发。
现在,我正在使用DataSource
方法,但正如我所说,我不希望页面重新加载。我只想更新__dopostback
。这可能吗?
答案 0 :(得分:6)
这不是怎么做的。有很多方法,但最简单的方法是将您的内容包含在UpdatePanel中并在页面上删除ScriptManager。
例如:
<asp:ScriptManager id="mymanager" runat="server" />
<asp:UpdatePanel id="mainPanel" runat="server">
<ContentTemplate>
<! -- Put your content here -->
</ContentTemplate>
</asp:UpdatePanel>
现在,您网页上的所有互动都将通过Ajax完成。
更好的方法(我目前使用的那个)
使用jQuery与Web服务一起进行Ajax调用。
示例代码:
[System.Web.Script.Services.ScriptService]
public class MyWebService: System.Web.Services.WebService
{
[WebMethod]
public List<BusinessObject> GetSomeData(int dataID)
{
//Invoke your business layer and get some data here
List<BusinessObject> result = BusinessLayer.GetSomeData();
return result;
}
}
在客户端使用jQuery,你可以这样做:
$.ajax({
type: "POST",
dataType: 'json',
contentType: "application/json; charset=utf-8",
url: "MyWebService.svc/GetSomeData",
data: {'dataId': you_id_here },
success: function(result) {
//result.d will contain an array of BusinessObject in JSON format
//You can iterate through this list and populate your html using this data.
//You can either use jQuery templates
//or one of the many jQuery plugins for tabular data.
//I use datatables:
//http://datatables.net/
for(int i=0;i<result.d.length; i++)
{
//do something here if you want to iterate one by one constructing your
//html
}
},
error: function(xhr, ajaxOptions, thrownError) {
//display error here
});
}
});
我强烈建议您查看以下链接:
答案 1 :(得分:0)
将GridView
放入asp:UpdatePanel
。涉及网格的所有回发都将更改为回调,您的网格应该更新,而无需重新加载整个页面。