2

我有 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();
    }
}

这是网络服务的代码:

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 会根据数据库中的记录重新加载。

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

4

5 回答 5

2

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

这里的一些信息应该可以帮助您实现这一点:http ://encosia.com/easy-refresh-an-updatepanel-using-javascript/

于 2012-10-08T12:39:01.273 回答
1

您必须将 GridView 放在更新面板中并以某种方式从客户端刷新它。如果您想在客户端做所有事情,您可以重新发明轮子并使用 jTables 之类的东西并创建自己的网格,但我不建议这样做

  1. 您可以使用__doPostbackJavascript
  2. 或者在您的页面上放置一个隐藏的按钮字段并在您的关闭按钮客户端调用其点击事件,例如

document.getElementById('yourButton').click();

于 2012-10-08T15:55:38.173 回答
0

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

斯里兰卡

于 2013-10-04T15:20:04.163 回答
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。

希望这可以帮助..

于 2012-10-08T12:45:44.523 回答
0

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

$("#YourGridView").load(location.href + " #YourGridView");
于 2016-09-20T07:21:34.440 回答