2016-06-29 2 views
0

Ich möchte alle Daten aus einer Gridview in die Gridview eines anderen Formulars mit Konstruktor übergeben. Ich habe viele Codes ausprobiert, die nicht funktionieren. in der ersten Form:mit Konstruktor für Formular, übergeben Sie alle Daten aus Gidview in die Gridview C# eines anderen Formulars?

private void button3_Click(object sender, EventArgs e) 
{ 
    int b = dataGridView1.Rows.Count; 
    for (int i = 0; i < b; i++) 
    { 
     Form8 f = new Form8(dataGridView1.Rows[i].Cells[0].Value.ToString(), 
          dataGridView1.Rows[i].Cells[1].Value.ToString(), 
          dataGridView1.Rows[i].Cells[2].Value.ToString(), 
          dataGridView1.Rows[i].Cells[3].Value.ToString(), 
          dataGridView1.Rows[i].Cells[4].Value.ToString(), 
          dataGridView1.Rows[i].Cells[5].Value.ToString(), 
          dataGridView1.Rows[i].Cells[6].Value.ToString(), 
          dataGridView1.Rows[i].Cells[7].Value.ToString()); 
     if (i == 8) 

     break; 
     f.Show(); 
    } 

} 

In nächster Form:

public partial class Form8 : Form 
{ 
    public Form8(string id,string name,string gender,string address,string place,string phoneno,string username,string password) 
    { 
     InitializeComponent(); 
     /// dataGridView1.Rows.Add(); 
     Form2 frm=new Form2(); 
     int b=frm.dataGridView1.RowCount; 
     for (int i = 0; i < b-1; i++) 
     { 
      dataGridView1.Rows[i].Cells[0].Value = id; 
      dataGridView1.Rows[i].Cells[1].Value = name; 
      dataGridView1.Rows[i].Cells[2].Value = gender; 
      dataGridView1.Rows[i].Cells[3].Value = address; 
      dataGridView1.Rows[i].Cells[4].Value = place; 
      dataGridView1.Rows[i].Cells[5].Value = phoneno; 
      dataGridView1.Rows[i].Cells[6].Value = username; 
      dataGridView1.Rows[i].Cells[7].Value = password; 
     } 
    } 
} 

es does'nt gut arbeiten. es zeigt keine von Formen, die eine Reihe in jeder Form zeigen? Bitten helfen .i ist ein beginer in der Programmierung .thak Sie in aduance

Datenquelle

private DataView GetData() 
    { 
     string selectQry = "select (id) as [Id], (name) as [Name],(gender)as [Gender],(address)as [Address],(place)as [place],(phoneno) as[mob],(username)as[User_name],(password)as[PWD],(photo) as[photo] from tbl_reg1"; 
     DataSet ds = new DataSet(); 
     DataView tableView = null; 
     try 
     { 

      conn = new SqlConnection(constrg.constr); 
      conn.Open(); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      SqlCommand tempCom = new SqlCommand(selectQry, conn); 

      da.SelectCommand = tempCom; 
      da.Fill(ds); 
      tableView = ds.Tables[0].DefaultView; 
     } 
     catch (SqlException ex) 
     { 
      MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     return tableView; 
    } 
    private void Form2_Load(object sender, EventArgs e) 
    { 
     dataGridView1.DataSource = GetData(); 

    } 
+0

Können Sie uns den Code zeigen, wo Sie die 'Datenquelle' auf' dataGridView1' setzen? –

+0

Was Sie brauchen, ist die Wiederverwendung der Datenquelle. –

+0

Ersetze dieses 'public Form8 (String-ID, String-Name, String-Geschlecht, String-Adresse, String-Platz, String-Phoneno, String-Benutzername, String-Passwort)' mit 'public Form2Form8 (String-ID, String-Name, String-Geschlecht, String-Adresse, String place, string phoneno, string Benutzername, string Passwort): this() {} ' –

Antwort

1

gridview1 Da Sie ganzen DataGridView1 in anderen Form benötigen, können Sie die DataSource ein DataGridView1 in MainForm bekommen konnten und Übergeben Sie es an andere Form.

private void button3_Click(object sender, EventArgs e) 
{ 
    var dataView = (DataView)dataGridView1.DataSource; 
    var table = dataView.Take(8)    // Since you want only 8 rows 
         .CopyToDataTable(); // Creates new DataTable 

    Form8 f = new Form8(table); 
    f.Show(); 
} 

nun in anderer Form (Form8) nur die Quelle gesetzt.

public partial class Form8 : Form 
{ 
    public Form8(DataTable data) 
    { 
     InitializeComponent();   
     dataGridView1.DataSource =table; 
    } 
} 
+0

Danke, Sir, es funktionierte –

+0

Kein Problem, bitte markieren Sie es als eine Antwort, wenn Sie glücklich darüber . –