2012-05-18 102 views
0

我正在使用批量更新来更新我的GridView。Gridview在更新后显示

首先提示用户选择日期,然后单击按钮以显示这些日期的gridview数据。更新相关的单元格,然后点击保存。

事情是我的Gridview消失后,它得到更新。 我希望Gridview保持显示更新的数据。 我该怎么做?

代码段:

string connStr = ConfigurationManager.ConnectionStrings["bbsConnectionString"].ConnectionString; 
     using (SqlConnection Con = new SqlConnection(connStr)) 
     { 

      SqlDataAdapter sdr = new SqlDataAdapter(str, Con); 

      sdr.SelectCommand.Parameters.AddWithValue("@startdate", startdate); 
      sdr.SelectCommand.Parameters.AddWithValue("@enddate", enddate); 
      DataTable dt = new DataTable(); 
      sdr.Fill(dt); 
      if (dt.Rows.Count > 0) 
      { 
       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
       Button2.Visible = true; 
      } 



     } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow row in GridView1.Rows) 
     { 



      TextBox dtm = row.FindControl("DtmTextBox") as TextBox; 


      string connStr = ConfigurationManager.ConnectionStrings["bbsConnectionString"].ConnectionString; 
      using (SqlConnection Con = new SqlConnection(connStr)) 
      { 
       Con.Open(); 
       SqlCommand cmd = new SqlCommand("Update tblAvailable set [email protected], [email protected] where [email protected] and [email protected] and [email protected]", Con); 



       // cmd.Parameters.AddWithValue("@dtm", DateTime.ParseExact(dtm.Text.Trim(), "dd/M/yyyy", System.Globalization.CultureInfo.InvariantCulture)); 

       cmd.ExecuteNonQuery(); 
       GridView1.EditIndex = -1; 
       GridView1.DataBind(); 
       GridView1.Visible = true; 




      } 

回答

1

你必须绑定方法被调用

GridView1.DataSource = dt; 
GridView1.DataBind(); 

之前这里你绑定更新后网格而不是GridView1分配数据表的数据表/数据集分配给数据源。数据源。你可以在这里调用DataGrid方法,而不是像这样绑定。

private void FillGrid() 
{ 
string connStr = ConfigurationManager.ConnectionStrings["bbsConnectionString"].ConnectionString; 
     using (SqlConnection Con = new SqlConnection(connStr)) 
     { 

      SqlDataAdapter sdr = new SqlDataAdapter(str, Con); 

      sdr.SelectCommand.Parameters.AddWithValue("@startdate", startdate); 
      sdr.SelectCommand.Parameters.AddWithValue("@enddate", enddate); 
      DataTable dt = new DataTable(); 
      sdr.Fill(dt); 
      if (dt.Rows.Count > 0) 
      { 
       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
       Button2.Visible = true; 
      } 
     } 
} 
//You should as call the method FillGrid that loads data and bind grid previously  

      cmd.ExecuteNonQuery(); 
      GridView1.EditIndex = -1; 
      //GridView1.DataBind(); 
      FillGrid(); 
      GridView1.Visible = true; 

删除结合以前

+0

除button1_click中的datatable dt在button1_click – user1270384

+0

中更新完成之后制作方法,用于像FillGrid()一样在网格中加载和填充数据并在更新语句之后调用以及在哪里您需要d填入网格 – Adil

+0

你有一个例子,请 – user1270384

0

我已经使用下面的代码电网这些语句并调用方法。我会努力。你应该再调用这个方法中,你按日期显示网格视图

public void DisplyGridview(){ 

string connStr = ConfigurationManager.ConnectionStrings["bbsConnectionString"].ConnectionString; 
    using (SqlConnection Con = new SqlConnection(connStr)) 
    { 

     SqlDataAdapter sdr = new SqlDataAdapter(str, Con); 

     sdr.SelectCommand.Parameters.AddWithValue("@startdate", startdate); 
     sdr.SelectCommand.Parameters.AddWithValue("@enddate", enddate); 
     DataTable dt = new DataTable(); 
     sdr.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
      Button2.Visible = true; 
      } 



    } 

} 保护无效GridView1_RowUpdating(对象发件人,GridViewUpdateEventArgs E) {

foreach (GridViewRow row in GridView1.Rows) 
    { 



     TextBox dtm = row.FindControl("DtmTextBox") as TextBox; 


     string connStr = ConfigurationManager.ConnectionStrings["bbsConnectionString"].ConnectionString; 
     using (SqlConnection Con = new SqlConnection(connStr)) 
     { 
      Con.Open(); 
      SqlCommand cmd = new SqlCommand("Update tblAvailable set [email protected], [email protected] where [email protected] and [email protected] and [email protected]", Con); 



      // cmd.Parameters.AddWithValue("@dtm", DateTime.ParseExact(dtm.Text.Trim(), "dd/M/yyyy", System.Globalization.CultureInfo.InvariantCulture)); 

      cmd.ExecuteNonQuery(); 
      GridView1.EditIndex = -1; 
      GridView1.DataBind(); 
      GridView1.Visible = true; 




     } 

DisplyGridview(); 

}

+0

谢谢@Kuldeep:我将使用上面的答案,因为我没有使用行更新。 – user1270384