我不确定我的设计是否有缺陷,但想知道别人有什么要说的,我正处于一种情况下,我只想点击一下就可以实现两件事。
使用:asp.net web form
我有一个带有少量文本框和gridview控件以及一个按钮的Web表单。
如果我点击按钮我正在执行两件事
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 =“返回LoadDataById();那么它只执行ajax代码并且不执行服务器端
但如果有onClientClick =“LoadDataById();那么它执行客户端和服务器但文本框值擦除。(文本框值通过ajax popuplate)
答案 0 :(得分:5)
如果你的jquery函数返回true,你的服务器端代码就会处理。返回false会阻止页面回发到服务器。
另外,设置onClientClick="return LoadDataById();"
答案 1 :(得分:0)
我已经用这种思维方式开发了一些东西,而且我记得,我对此没有任何麻烦。
但是如果你在jQuery中返回false,则不会发生回发。