asp.net如何刷新gridview

时间:2011-07-07 22:29:02

标签: asp.net gridview

我试图在插入后刷新网格视图,但它不适合我,这是我的代码:

<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>

以下是代码:

    protected void Page_Load(object sender, EventArgs e)
{
    // filling the grid view

    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);

    MainGrid.DataSource = ds;
    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();
    MainGrid.DataBind();
    conn.Close();
}

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

3 个答案:

答案 0 :(得分:5)

现在您已插入记录,您需要使用该新数据重新绑定数据网格。我建议稍微重新调整你的代码,这样你就不会违反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;
}

答案 1 :(得分:0)

插入新记录后,您必须重新查询数据库并使用包含新插入记录的数据源重新绑定网格(与在Page_Load中一样)。

答案 2 :(得分:0)

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

请参阅http://msdn.microsoft.com/en-us/library/ms178472.aspx

因此,在您显示数据之后将数据添加到表中以及为什么要执行F5

而是将页面加载的内容移动到PreRender事件中,并且所有内容都应该是好的