执行客户端&单击服务器端代码?

时间:2010-05-18 18:53:49

标签: asp.net jquery

我不确定我的设计是否有缺陷,但想知道别人有什么要说的,我正处于一种情况下,我只想点击一下就可以实现两件事。

使用: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)

2 个答案:

答案 0 :(得分:5)

如果你的jquery函数返回true,你的服务器端代码就会处理。返回false会阻止页面回发到服务器。

另外,设置onClientClick="return LoadDataById();"

答案 1 :(得分:0)

我已经用这种思维方式开发了一些东西,而且我记得,我对此没有任何麻烦。

但是如果你在jQuery中返回false,则不会发生回发。