如何在jquery ajax调用后重新加载asp.net GridView?

时间:2012-10-08 12:17:15

标签: asp.net web-services jquery webforms

我有GridView,文本框,一个HTML按钮。它的作用是文本框包含一个值,该值将在单击html按钮后保存在数据库中。

Here is the code for the page:

<div>
        <div id="Gridview-container">
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
        </div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <input type="button" id="btn" value="insert" />

    </div>
    </form>

    <script type="text/javascript">

        $("#btn").click(function () {
            var a = $("#TextBox1").val();

            $.ajax({
                url: 'WebService.asmx/insert',
                data: "{ 'name': '" + a + "' }",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                type: "POST",
                success: function () {

                    //alert('insert was performed.');
                    $("#Gridview-container").empty();


                }
            });

        });


    </script>

以下是该页面背后的代码:

public partial class GridViewCourses : System.Web.UI.Page
{
    Database db = new Database();

    protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = db.LoadCourses();
        GridView1.DataBind();
    }
}

以下是webservice的代码:

public class WebService : System.Web.Services.WebService {

    public WebService () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 

    }

    [WebMethod]
    public string HelloWorld() {

        return "Hello World";
    }

    [WebMethod]
    public void insert(string name)
    {
        Database db = new Database();
        db.Add(name);
    }



}

我想要一些与GridView.DataBind()具有相同效果的东西,这样当我执行删除和更新时,GridView会根据数据库中的记录重新加载。

先生/女士,您的回答将会有很大帮助。谢谢++

5 个答案:

答案 0 :(得分:2)

您可以使用UpdatePanel并将GridView放入其中。然后,为了从javascript引发回发,您必须使用__doPostBack并定位您的UpdatePanel。

此处的一些信息可以帮助您实现此目的:http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

答案 1 :(得分:1)

您必须将GridView放在更新面板和放大器中。以某种方式从客户端刷新它。如果你想做所有客户,你可以重新发明轮子和&amp;使用像jTables和amp;创建自己的网格,但我不建议

  1. 您可以使用__doPostback Javascript
  2. 或在页面上放置一个隐藏的按钮字段&amp;在客户端关闭按钮上调用其click事件,如
  3.   

    的document.getElementById( 'yourButton')点击();

答案 2 :(得分:0)

您在单独的方法中编写gridview绑定代码。像这样

public void dataBind()

{

GridView1.DataSource = db.LoadCourses();
GridView1.DataBind();

}

[WebMethod]
public void insert(string name)
{
    Database db = new Database();
    db.Add(name);
    //after successful insertion call dataBind

    dataBind() //this method will update the grdivew with new data

}
如果需要,

将webmethod定义为代码隐藏中的pagemethod。

希望这会有所帮助..

答案 3 :(得分:0)

我意识到它有点旧论坛。但是,我在按钮上使用UseSubmitBehavior = false。当然,使按钮成为asp:Button。并且,声明Onclick和OnClientClcik事件。这样,它将首先触发onclientclick事件,然后触发onclick事件。

答案 4 :(得分:0)

将以下行添加到jQuery的末尾:

$("#YourGridView").load(location.href + " #YourGridView");