2016-12-01 1 views
0

Ich habe ein Formular mit Gitter (DataGridView1) und Textfeld (txtSearch). Wenn ich etwas in Textfeldfilter nach Feld acSubject eintippe. Jetzt setze ich das zweite Raster und ich will neue benutzerdefinierte SQL-Abfrage, die von der ausgewählten Zeile in dataGridView1 abhängen wird. SQL wäre: '' '' wählen anUserID von the_setsubjcontact wo acSubject = @acSubject '' ''C# Master Detail Gridview auf SelectionChanged

Wie ich das kann. -Code ist es:

public partial class Form1 : Form 
{ 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(); 
     con.ConnectionString = @"Data Source=local\s08r2;Initial Catalog=Demo;User id=sa;Password=sa"; 
     con.Open(); 
     SqlDataAdapter sda = new SqlDataAdapter(@" 
      SELECT acSubject, acAddress, acPost, acName, acPhone, 
      acFieldSA, acFieldSB, acFieldSC, acFieldSD, acFieldSE, 
      anFieldNA, anFieldNB, anFieldNC, anFieldND, anFieldNE, OdgovornaOsoba, acSubjTypeBuyer 
      FROM ARS.dbo._ARSCRM_vSubjekti 
      ", con); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     dataGridView1.DataSource = dt; 

     } 
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 

    } 

    private void txtSearch_TextChanged(object sender, EventArgs e) 
    { 
     if (string.IsNullOrEmpty(txtSearch.Text)) 
     { 
      (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Empty; 
     } 
     else 
     { 
      (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("acSubject like '%{0}%'", txtSearch.Text); 
     } 
    } 

    private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
    { 
     DataGridView dgv = (DataGridView)sender; 

     //User selected a cell (show the first cell in the row) 
     if (dgv.SelectedCells.Count > 0) 
      txtAcFieldSA.Text = dgv.Rows[dgv.SelectedCells[0].RowIndex].Cells[5].Value.ToString(); 

    } 
} 

ich Erfolg war, als ich DataSet von C# verwenden, aber mit CustomSQL ich weiß nicht, wie das zu tun. Bitte helfen Sie.

Antwort

1
private void ShowDetails(int UserId) 
    { 
     SqlConnection con = new SqlConnection(); 
     con.ConnectionString = @"Data Source=local\s08r2;Initial Catalog=Demo;User id=sa;Password=sa"; 
     con.Open(); 
     SqlDataAdapter sda = new SqlDataAdapter(@" 
      select anUserID from the_setsubjcontact where acSubject = @acSubjec", con); 
da.SelectCommand.Parameters.AddWithValue(@acSubjec, UserId.ToString()); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     dataGridView2.DataSource = dt; 

     } 

private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
    { 
     DataGridView dgv = (DataGridView)sender; 

     //User selected a cell (show the first cell in the row) 
     if (dgv.SelectedCells.Count > 0 && dgv.SelectedCells[0].RowIndex >-1 && dgv.Rows[dgv.SelectedCells[0].RowIndex].Cells.Count > 0) 
      txtAcFieldSA.Text = dgv.Rows[dgv.SelectedCells[0].RowIndex].Cells[0].Value.ToString(); 
ShowDetails(int.Parse(txtAcFieldSA.Text)); 

    } 
+0

ShowDetails (int.Parse (txtAcFieldSA.Text)); Hier senden wir txtAcFieldSA.text und ich möchte acSubject aus der ausgewählten Zeile in DataGridView1 senden, ist das möglich? – kole1108

+0

Ich habe meine Antwort bearbeitet, um aus Cells [0] zu wählen, wenn sich Ihr acSubject in der ersten Zelle befindet. – agfc

+0

Ich stelle dies: ShowDetails (dgv.Rows [dgv.SelectedCells [0] .RowIndex] .Cells [0] .Value.ToString()); und dieses: private void Showdetails (string Subjekt) nun perfekt funktionieren, wenn ich Zeile mit der Maus auswählen, aber wenn ich in txtSearch Typ I erhalten Fehler: Index außerhalb des zulässigen Bereichs war. Muss nicht negativ und kleiner als die Größe der Sammlung sein. Beim Aufrufen von ShowDetails. – kole1108

Verwandte Themen