这个问题一直在唠叨我好几天了。这是的情况:使用AJAX和jQuery基于输入加载数据网格
我有一个DataGrid
没有数据加载到它。我也有一个Input Text
,它使用AJAX和jQuery来显示用户在键入时可以选择的值的现有列表。这是一个搜索系统,将根据用户输入的内容提取所有记录。然后我有一个Input Button
,按下时需要填入DataGrid
。我需要的AJAX是为了刷新DataGrid
每次按下按钮时不刷新整个页面,因此输入而不是asp。我的问题是让JavaScript/* jQuery *调用将要使用的方法。我也需要它来获得InputText
的价值并将其用于搜索。这是我迄今为止(不完整,需要帮助完成)。
数据网格(这是从另一DataGrid
使用相同的数据复制,只是缩短。可能是不正确的编码。)
<asp:DataGrid ID="Display" AutoGenerateColumns="false" ViewStateMode="Disabled" runat="server">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
Line</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="LineNumber" Text='<%# DataBinder.Eval(Container.DataItem, "LineNumber") %>'
runat="server" /></ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Date</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="CreateDate" Text='<%# DataBinder.Eval(Container.DataItem, "CreateDate", "{0: MM/dd/yyyy}") %>'
runat="server" /></ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Operator</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Operator" Text='<%# DataBinder.Eval(Container.DataItem, "Operator") %>'
runat="server" /></ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
的JavaScript/jQuery的(这被放置在Button
“的 “onclick” 事件。)
function refresh() {
$.ajax({
type: "POST",
url: "WebForm1.aspx/PopulateGrid",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (result) { alert(result.status + ' ' + result.statusText); }
}
);
};
代码背后(我想尝试和使用的代码是后但如果需要处理程序,请让我知道。)
[WebMethod]
protected void PopulateGrid()
{
using (Entities ent = new Entities(ConfigurationManager.ConnectionStrings["QCConnString"].ToString()))
{
string oper = Request.QueryString["getData"].ToString();
AllDataSources ds = new AllDataSources();
Display.DataSource = ds.refreshData(ent, oper);
Display.DataBind();
}
}
,因为我更接近答案,或者已经来到了一个解决方案,我会更新这个。我真的希望有人能帮我解决这个问题。我奋斗了这么久。
难道你不能只把按钮和网格放在更新面板,并填充网格的方式? –
我听说使用MS AJAX不是一个好主意..所以我想尽量避免这种情况。但我会认为这是最后的手段。 – SiSan
你将需要一个异步回调来完成绑定,所以我认为你没有太多的选择。您无法绑定客户端上的DataGrid。如果MS AJAX是适合您的工作的工具,您应该使用它。 –