asp.net如何刷新gridview

asp.net如何刷新gridview,asp.net,gridview,Asp.net,Gridview,我正在尝试在插入后刷新网格视图,但它对我无效,以下是我的代码: <asp:TextBox ID="TimeBox" runat="server" /> <asp:TextBox ID="CommentBox" runat="server" TextMode="MultiLine" /> <asp:Button ID="insButton" runat="server" OnClick="inse

我正在尝试在插入后刷新网格视图,但它对我无效,以下是我的代码:

<asp:TextBox ID="TimeBox" runat="server" />
                <asp:TextBox ID="CommentBox" runat="server" TextMode="MultiLine" />
                    <asp:Button ID="insButton" runat="server" OnClick="insert" Text="Insert" />
<asp:GridView ID="MainGrid" runat="server">
</asp:GridView>

插入工作正常,如果我刷新页面,我可以看到数据,但我尝试只刷新网格视图而不刷新页面。

插入新记录后,您必须重新查询数据库,并使用包含新记录的数据源重新绑定网格(与您在页面加载中所做的相同),插入的记录。

插入新记录后,必须重新查询数据库,并使用包含新插入记录的数据源重新绑定网格(与加载页面中的操作相同)。

由于网格渲染后正在处理插入按钮的事件,因此无法看到预期结果

因此,在显示数据后,数据将被添加到表中,以及为什么使用F5


相反,将页面加载的内容移动到
PreRender
事件中,一切都应该正常

您没有看到预期的结果,因为在网格渲染后正在处理插入按钮的事件

因此,在显示数据后,数据将被添加到表中,以及为什么使用F5


相反,将页面加载的内容移动到
PreRender
事件中,一切都应该正常

插入记录后,需要使用新数据重新绑定数据网格。我建议对代码进行一点重新核心化,这样就不会违反DRY原则(不要重复),并将数据调用提取到它自己的方法中

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        MainGrid.DataSource = GetData();
        MainGrid.DataBind();  
    }
}

protected void insert(object sender, EventArgs e) //adding the comments 
{
    SqlConnection conn = new SqlConnection(@"connectionString");
    SqlCommand cmd = new SqlCommand("INSERT INTO tennis (tim,com) VALUES (@tim,@com)", conn);
    cmd.Parameters.AddWithValue("@tim", TimBox.Text);
    cmd.Parameters.AddWithValue("@com", ComBox.Text);

    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    MainGrid.DataSource = GetData();
    MainGrid.DataBind();
}

protected DataSet GetData()
{
    SqlConnection conn = new SqlConnection (@"connectionString");
    SqlCommand cmd = new SqlCommand("SELECT tim,com FROM ten",conn);
    conn.Open();

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);

    return ds;
}

既然已经插入了记录,就需要使用新数据重新绑定数据网格。我建议对代码进行一点重新核心化,这样就不会违反DRY原则(不要重复),并将数据调用提取到它自己的方法中

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        MainGrid.DataSource = GetData();
        MainGrid.DataBind();  
    }
}

protected void insert(object sender, EventArgs e) //adding the comments 
{
    SqlConnection conn = new SqlConnection(@"connectionString");
    SqlCommand cmd = new SqlCommand("INSERT INTO tennis (tim,com) VALUES (@tim,@com)", conn);
    cmd.Parameters.AddWithValue("@tim", TimBox.Text);
    cmd.Parameters.AddWithValue("@com", ComBox.Text);

    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    MainGrid.DataSource = GetData();
    MainGrid.DataBind();
}

protected DataSet GetData()
{
    SqlConnection conn = new SqlConnection (@"connectionString");
    SqlCommand cmd = new SqlCommand("SELECT tim,com FROM ten",conn);
    conn.Open();

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);

    return ds;
}

如果我按“插入”按钮,您不是运行GetData两次吗!?好了,我修好了。答案还值得否决吗?+1您还为GridView绑定编写了一个函数BindGrid。如果我按insert按钮,您不是在运行GetData两次吗!?好了,我修好了。答案还值得否决吗?+1您还为GridView绑定编写了一个函数BindGrid。