2011-04-18 117 views
2

我是C#中的新成員。我想在運行時在GridView中添加行。我從2或3張表中收集數據。但是每當我去 用GridView綁定()它時,最後一個插入的行將被當前的一個覆蓋。而GridView只顯示當前行。 是否可以將兩行顯示在另一個的下方?或者是否有任何代碼可以這麼做。請向我推薦代碼,以便我可以在我的項目中使用它。謝謝。GridView在運行時逐行添加

回答::首先你必須聲明一個靜態datatable.And一個布爾變量,其值初始爲「true」。 然後執行以下代碼--- >>> 這裏是我的代碼::

protected void btnAdd_Click(object sender, EventArgs e) 
{ 
    int coursemasterid = Convert.ToInt32(dlAdmissionCourses.SelectedItem.Value); 
    int batchmasterid = Convert.ToInt32(dlAssignBatch.SelectedItem.Value); 


    string SQL1 = "SELECT coursename,coursefees,batchname FROM CourseMaster,BatchMaster WHERE CourseMaster.coursemasterid=BatchMaster.coursemasterid and CourseMaster.coursemasterid="+coursemasterid+" and BatchMaster.batchmasterid="+batchmasterid+""; 
     DataTable otable = new DataTable(); 
     otable = DbHelper.ExecuteTable(DbHelper.CONSTRING, CommandType.Text, SQL1, null); 
     DataRow dr1 = otable.Rows[0]; 
     string coursename = dr1["coursename"].ToString(); 
     int coursefees = Convert.ToInt32(dr1["coursefees"]); 
     string batchname = dr1["batchname"].ToString(); 

if (chkadd == true) 
     { 
      dtglb = new DataTable(); //here dtglb is a global datatable 
      dtglb.Columns.Add("coursename", typeof(string)); 
      dtglb.Columns.Add("coursefees", typeof(int)); 
      dtglb.Columns.Add("batchname", typeof(string)); 

     } 
     foreach (DataRow dr in otable.Rows) 
     { 
      dtglb.NewRow(); 
      dtglb.Rows.Add(coursename,coursefees,batchname); 

     } 
     chkadd = false; 
     GridView1.DataSource = dtglb; 
    GridView1.DataBind();   

}

+0

從選擇語句中的所需表格中選擇數據或從t中單獨選擇數據他將所有結果列表併合併到一個列表中並將其綁定到網格 – 2011-04-18 06:54:05

+0

您現在正在做什麼..需要查看代碼 – V4Vendetta 2011-04-18 07:01:52

+0

@ V4Vendetta ::感謝您的幫助。在這裏我正在給我的代碼。 – Pavvy 2011-04-18 16:55:02

回答

1
//declaring a datatable global in form 
     DataTable dtglb=new DataTable(); 

     //In click event  
    SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=EMS;User ID=sa;Password=sa123"); 

    string SQL1 = "SELECT coursename,coursefees,batchname FROM CourseMaster,BatchMaster WHERE CourseMaster.coursemasterid=BatchMaster.coursemasterid and CourseMaster.coursemasterid="+coursemasterid+" and BatchMaster.batchmasterid="+batchmasterid+""; 
    SqlCommand cmd = new SqlCommand(SQL1, con); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    DataTable ds = new DataTable(); 
    //DataColumn faculty = new DataColumn(); 
    da.Fill(ds); 
    GridView1.DataSourceID = null; 

    //New Code Added Here 
    DataRow row = ds.NewRow(); 
    //your columns 
    row["columnOne"] = valueofone; 
    row["columnTwo"] = valueoftwo; 
    dtglb.Rows.Add(row); 
     foreach(DataRow dr in dtglb.Rows) 
    { 
    ds.Rows.Add(dr); 
    } 
    //========= 
    GridView1.DataSource = ds; 
    GridView1.DataBind();  
0

行添加到DataGridView的本身

DataGridViewRow row = new DataGridViewRow(); 
dataGridView1.BeginEdit(); 
//your columns 
row.Cells["columnOne"] = valueofone; 
row.Cells["columnTwo"] = valueoftwo; 
dataGridView1.Rows.Add(row); 
dataGridView1.EndEdit(); 
+0

感謝您的幫助。但我怎樣才能給個別列值。在我的代碼是有可能的嗎?請看我上面的代碼。 – Pavvy 2011-04-18 17:05:36

+0

在databind()後加上這個; – Nighil 2011-04-19 04:13:04

+0

@abatishchev ::我試過你的代碼,但我正在使用web應用程序和webcontent窗體。因此你的方法不適合我。如果有任何解決方案,請幫助我。 – Pavvy 2011-04-19 09:54:22