我不确定我的设计是否有缺陷,但想知道别人的看法。我现在处于这样一种情况:我试图实现一次点击同时完成两个任务。
使用:ASP.NET Web表单
我有一个Web表单,里面有几个文本框、一个GridView控件和一个按钮。
如果我点击按钮,我会执行两件事:
1)从服务器异步获取数据到客户端(非常好用),并能够在文本框中显示数据。
2)同一次点击我想要绑定GridView。
使用:ASP.NET Web表单
我有一个Web表单,里面有几个文本框、一个GridView控件和一个按钮。
如果我点击按钮,我会执行两件事:
1)从服务器异步获取数据到客户端(非常好用),并能够在文本框中显示数据。
2)同一次点击我想要绑定GridView。
<asp:Content ID="Content2" ContentPlaceHolderID="cphMaster" runat="server">
<asp:Label runat="server" ID='Label1' >Id:</asp:Label>
<asp:TextBox ID="txtId" runat='server'></asp:TextBox>
<asp:Button ID="btnSubmit" OnClientClick="LoadDataById();" runat="server" Text="Submit"
onclick="btnSubmit_Click" />
<br />
<br />
<asp:TextBox ID="txtName" runat='server'></asp:TextBox> <br />
<asp:TextBox ID="txtPurpose" runat='server'></asp:TextBox> <br />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</asp:Content>
服务器端
protected void btnSubmit_Click(object sender, EventArgs e)
{
GridView1.DataSource = laodData(int.Parse(txtId.Text));
GridView1.DataBind();
}
Jquery:
function LoadVisitBasicByVisitId() {
ContactServiceProxy.invoke({ serviceMethod: "GetDataById",
data: { request: request },
callback: function(response) {
processCompletedContactStore(response);
},
error: function(xhr, errorMsg, thrown) {
postErrorAndUnBlockUI(xhr, errorMsg, thrown);
}
});
return false;
}
回顾:
1) jquery script execute asynchronously to get data from server to client and display in the textboxes
2) server side code to bind the gridview.
问题:
如果我使用 onClientClick="return LoadDataById();,那么它只会执行 ajax 代码而不会执行服务器端的代码。
但是如果我使用 onClientClick="LoadDataById();,那么它会同时执行客户端和服务器端的代码,但文本框的值会被清空。(文本框的值是通过 ajax 填充的)