2013-06-08 1 views
2

데이터 격자의 내용으로 텍스트 상자를 채우려고합니다.데이터 그리드 행을 클릭하고 해당 내용을 텍스트 상자에 표시

저는 XYZCompany.accbd라는 데이터 소스를 사용하고 있습니다. dgv에 데이터베이스 내용 (이 경우 공급 업체 ID (자동 번호 필드), 공급자 이름, 공급자 주소, 전화 번호 및 계약 이름 포함)를 채 웁니다.

먼저이 필드에 dgv를 채 웁니다. 다음 단계는 내가 drugs에서 행을 클릭하면 텍스트 상자에 행의 데이터를 표시해야한다는 것입니다. 문제는 dgv 행을 클릭 할 때 텍스트 상자에 표시되지 않고 오류가 발생하지 않는 경우입니다.

매개 변수로 연결을 새 양식에 전달합니다. 하지만 어쨌든 그것을 지정할 것입니다. 다음은 내가 통과 한 선언입니다.

OleDbConnection dbConn; 
    OleDbCommand dbCmd; 
    DataSet ds = new DataSet(); 
    OleDbDataAdapter dbAdapter; 
    private void ViewAllSuppliers_Load(object sender, EventArgs e) 
    { 
     dbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data  Source=XYZCompany.accdb"); 

     dbCmd = new OleDbCommand("SELECT * FROM Supplier ORDER BY [Supplier ID]", dbConn); 


     dbAdapter = new OleDbDataAdapter(dbCmd); 
     dbAdapter.Fill(ds, "Suppliers"); 

    } 

    private void btnViewSuppliers_Click(object sender, EventArgs e) 
    { 
     dgvSuppliers.DataSource = ds.Tables["Suppliers"]; 
    } 

이는 내가 통과 한 매개 변수의 코드입니다. ... 여기

답변

2

이입니다 미리 감사드립니다

public partial class ChangeSupplier : Form 
{ 
    OleDbConnection dbConn; 
    OleDbCommand dbCmd; 
    DataSet ds; 
    OleDbDataAdapter dbAdapter; 
    OleDbDataReader dbReader; 

    public ChangeSupplier(OleDbConnection dbConn, OleDbCommand dbCmd, DataSet ds, OleDbDataAdapter dbAdapter) 
    { 
     InitializeComponent(); 
     this.dbConn = dbConn; 
     this.dbCmd = dbCmd; 
     this.ds = ds; 
     this.dbAdapter = dbAdapter; 
    } 

    private void ChangeSupplier_Load(object sender, EventArgs e) 
    { 
     dgvSuppliers.DataSource = ds.Tables["Suppliers"]; 
    } 

    private void dgvSuppliers_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (dgvSuppliers.SelectedRows.Count > 0) 
     { 

      dbConn.Open(); 

      dbCmd = new OleDbCommand("SELECT * FROM Supplier WHERE [Supplier ID] = '" + dgvSuppliers.SelectedRows[0].Cells[0].Value + "'", dbConn); 

      dbReader = dbCmd.ExecuteReader(); 

      while (dbReader.Read()) 
      { 

       txtName.Text = dbReader["[Supplier Name]"].ToString(); 
       txtTelNo.Text = dbReader["[Telephone No]"].ToString(); 
       txtAddress.Text = dbReader["[Supplier Address]"].ToString(); 
       txtContactName.Text = dbReader["[Contact Name]"].ToString(); 

      } 
     } 
    } 
} 

아무것도 제안 주시기 바랍니다 : 여기에

는 내가 텍스트 상자를 채우는 데 사용하려고 내가 형태로 가지고있는 코드입니다 위의 문제에 대한 해결책 :

private void dgvSuppliers_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex >= 0) 
     { 

      DataGridViewRow row = this.dgvSuppliers.Rows[e.RowIndex]; 

      txtID.Text = row.Cells["Supplier ID"].Value.ToString(); 
      txtName.Text = row.Cells["Supplier Name"].Value.ToString(); 
      txtTelNo.Text = row.Cells["Telephone No"].Value.ToString(); 
      txtAddress.Text = row.Cells["Supplier Address"].Value.ToString(); 
      txtContactName.Text = row.Cells["Contact Name"].Value.ToString(); 

     } 

    } 

나는 사용자가 클릭하는 셀을 찾기 위해 행 인덱스를 사용했다.

1
private void dgvSuppliers_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex >= 0) 
    { 

     DataGridViewRow row = this.dgvSuppliers.Rows[e.RowIndex]; 

     txtID.Text = row.Cells["Supplier ID"].Value.ToString(); 
     txtName.Text = row.Cells["Supplier Name"].Value.ToString(); 
     txtTelNo.Text = row.Cells["Telephone No"].Value.ToString(); 
     txtAddress.Text = row.Cells["Supplier Address"].Value.ToString(); 
     txtContactName.Text = row.Cells["Contact Name"].Value.ToString(); 

    } 

} 
관련 문제