2014-07-18 1 views
0

테이블의 데이터를 winform에 표시하는 데 도움이 필요합니다. 일반적으로 이것은 datagridview를 사용하여 수행 할 수 있지만 datagridvide는 테이블의 전체 내용을 표시하거나 필터 함수를 사용하여 필터와 일치하는 데이터를 표시 할 수 있습니다.C# winform 응용 프로그램의 테이블에서 데이터 표시

내가 현재 직면하고있는 문제는 book_issued라는 테이블이 있습니다.이 테이블에는 학생에게 발행 된 모든 책의 세부 정보가 들어 있으며 각 학생마다 고유 한 자료가 있습니다.

나는 로그인 할 때 학생의 레지가의 가치를 얻은 로그인 양식을 가지고 있으며, 학생이 발행 된 모든 책의 목록을 표시해야하는 다른 양식으로 안내합니다.

내가 SQL 쿼리

"SELECT * FROM book_issued WHERE regid = @regid" 

내가 DataReader를에서 데이터를 parametarized 값을 전달 독서의 과정을 생략하고를 실행하고 있음을 달성하기 위해.

내 문제는 양식에 데이터를 표시하는, 어떤 도움을 크게 감상 할 수있다

그것을

private void student_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the 'libDataSet8.issue' table. You can move, or remove it, as needed. 
      this.issueTableAdapter1.Fill(this.libDataSet8.issue); 
      // TODO: This line of code loads data into the 'libDataSet7.issue' table. You can move, or remove it, as needed. 
      //this.issueTableAdapter.Fill(this.libDataSet7.issue); 
      //// TODO: This line of code loads data into the 'libDataSet6.books' table. You can move, or remove it, as needed. 
      //this.booksTableAdapter.Fill(this.libDataSet6.books); 

     } 

     private void nameToolStripButton_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       this.booksTableAdapter.name(this.libDataSet6.books, nameToolStripTextBox.Text); 
      } 
      catch (System.Exception ex) 
      { 
       System.Windows.Forms.MessageBox.Show(ex.Message); 
      } 

     } 

     //Get Student Details 
     private void student_details(string input) 
     { 
      query = "SELECT * FROM student WHERE regid = @regid"; 
      string conString = Properties.Settings.Default.libConnectionString; 
      using (SqlCeConnection conn = new SqlCeConnection(conString)) 
      { 
       conn.Open(); 
       using (SqlCeCommand cmd = new SqlCeCommand(query, conn)) 
       { 
        cmd.Parameters.AddWithValue("@regid", input); 
        cmd.ExecuteNonQuery(); 

        SqlCeDataReader reader = cmd.ExecuteReader(); 

        while (reader.Read()) 
        { 
         dob = reader["dob"].ToString(); 
         sbook = Convert.ToInt32(reader["book"].ToString()); 
         fine = Convert.ToDouble(reader["fine"].ToString()); 
        } 
        string temp = dob.Substring(5, 4); 
        int years = DateTime.Now.Year - Convert.ToInt32(temp); 

        sage = years; 

       } 
      } 

     } 
     //Method to validate user inputs 
     private bool ValidateISBNi() 
     { 
      bool bStatus = true; 
      if (isbni.Text == string.Empty) 
      { 
       errorProvider2.SetError(isbni, ""); 
       errorProvider1.SetError(isbni, "Please Enter ISBN code"); 
       bStatus = false; 
      } 
      else 
      { 
       query = "SELECT * FROM books WHERE isbn = @isbn"; 
       string conString = Properties.Settings.Default.libConnectionString; 
       using (SqlCeConnection conn = new SqlCeConnection(conString)) 
       { 
        conn.Open(); 
        using (SqlCeCommand cmd = new SqlCeCommand(query, conn)) 
        { 
         cmd.Parameters.AddWithValue("@isbn", isbni.Text); 
         cmd.ExecuteNonQuery(); 

         SqlCeDataReader reader = cmd.ExecuteReader(); 

         while (reader.Read()) 
         { 
          counter = 1; 
         } 

        } 
       } 
       if (counter == 1) 
       { 
        errorProvider1.SetError(isbni, ""); 
        errorProvider2.SetError(isbni, "Good"); 
        counter = 0; 
       } 
       else 
       { 
        errorProvider2.SetError(isbni, ""); 
        errorProvider1.SetError(isbni, "Invalid ISBN code"); 
        bStatus = false; 
       } 
      } 
      return bStatus;    
     } 

     private bool ValidateISBNr() 
     { 
      bool bStatus = true; 
      if (isbni.Text == string.Empty) 
      { 
       errorProvider2.SetError(isbnr, ""); 
       errorProvider1.SetError(isbnr, "Please Enter ISBN code"); 
       bStatus = false; 
      } 
      else 
      { 
       query = "SELECT * FROM issue WHERE isbn = @isbn AND rgid = @rgid"; 
       string conString = Properties.Settings.Default.libConnectionString; 
       using (SqlCeConnection conn = new SqlCeConnection(conString)) 
       { 
        conn.Open(); 
        using (SqlCeCommand cmd = new SqlCeCommand(query, conn)) 
        { 
         cmd.Parameters.AddWithValue("@isbn", isbnr.Text); 
         cmd.Parameters.AddWithValue("@rgid", Variables.regid); 
         cmd.ExecuteNonQuery(); 

         SqlCeDataReader reader = cmd.ExecuteReader(); 

         while (reader.Read()) 
         { 
          counter = 1; 
         } 

        } 
       } 
       if (counter == 1) 
       { 
        errorProvider1.SetError(isbnr, ""); 
        errorProvider2.SetError(isbnr, "Good"); 
        counter = 0; 
       } 
       else 
       { 
        errorProvider2.SetError(isbni, ""); 
        errorProvider1.SetError(isbni, "Invalid ISBN code"); 
        bStatus = false; 
       } 
      } 
      return bStatus;    
     } 


     private void isbni_Validating(object sender, CancelEventArgs e) 
     { 
      ValidateISBNi(); 
     } 

     private void isbnr_Validating(object sender, CancelEventArgs e) 
     { 
      ValidateISBNr(); 
     } 


     private void button1_Click(object sender, EventArgs e) 
     { 
      bool vissue; 
      vissue = ValidateISBNi(); 
      if (vissue) 
      { 

      } 
     } 

     private void button3_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void groupBox3_Enter(object sender, EventArgs e) 
     { 

     } 


    } 
} 

없이 질문을 부결 할 문제지만 PPL과 아무 상관이

바보 코드 거기에 ne1 도움이 임의의 코드 잔뜩 추가했습니다? 나는 그것을 생각하지 않았다. 그래서 내가 처음에 그것을 게시하지 못했을 것이다.

+0

데이터 바인딩 된 DGV를 사용하는 경우 a) 데이터 집합으로 전송되는 행 수를 결정하고 b) DGV에서 전송되고 생성 된 열입니다. 그러나 네비게이션 컨트롤을 만들고 레이블, 체크 박스 텍스트 상자 등과 같은 다양한 컨트롤에 바운드 데이터를 복사 할 수도 있습니다. – TaW

+0

때로는 이런 일이 발생합니다. 그것은 종종 그 질문이 앞으로 다른 사람들에게 거의 사용되지 않는다고 믿는 것을 의미합니다. 그것의 아무것도 생각하지 - 또는 너무 많이! – TaW

답변

1

이것은 이것이 무엇을 의미 하는가?

양식 1에서 TextBox 이름이 txtRegStud이라고 가정하면 form1의 값이 form2로 전달됩니까? 당신은 상속에 관한 것입니다. Form1에있는

이 것 아마 코드 :

public string strRegStud; 
private void frm2_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      OleDbConnection Con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\dbname.mdb;"); 
      OleDbCommand command = new OleDbCommand(); 
      OleDbDataAdapter adapter = new OleDbDataAdapter(); 
      DataTable dt = new DataTable(); 
      Con.Open(); 
      command.CommandText = String.Format("SELECT * FROM book_issued WHERE regid ='{0}'", strRegStud);; 
      command.Connection = Con; 
      adapter.SelectCommand = command; 
      adapter.Fill(dt); 
      Con.Close(); 
      Con.Dispose(); 
      datagridview1.DataSource = dt; 

     } 
     catch (Exception ex) 
     { 
      XtraMessageBox.Show(ex.Message); 
     } 
    } 

은 이것이다 : 당신을 Form2에 다음

form2 f = new frm2(); 
f.strRegStud = txtRegStud.Text; 
f.Show(); 
this.Dispose(); 

, 당신은 어떤 다른 형태의 값을 수행하기 위해 공공 문자열을 선언 할 필요가 너는 무엇을보고 있는가?

+1

이렇게하면 form1에서 form2로 regid를 전달할 수 있었지만 데이터를 표시하는 방법을 잃어 버렸습니다. 감사합니다. –

관련 문제