2013-12-16 19 views
0

나는 내 코드를 위해 무엇을하려고 했는가?이 코드를 시도했지만 datagridviewi에 추가 한 데이터베이스의 각 계정에 대한 것이지만 모든 comum은 비어 있습니까?foreach

public DataTable GetResultsTable(string Username) 
{ 
    using (SqlDatabaseClient client = SqlDatabaseManager.GetClient()) 
    { 
     DataRow row = client.ExecuteQueryRow("SELECT * FROM users WHERE username = '" + Username + "'"); 
     DataTable table = new DataTable(); 
     table.Columns.Add("Username".ToString()); 
     table.Columns.Add("Motto".ToString()); 
     table.Columns.Add("Email".ToString()); 
     table.Columns.Add("Homeroom".ToString()); 
     table.Columns.Add("Health".ToString()); 
     table.Columns.Add("Energy".ToString()); 
     table.Columns.Add("Age".ToString()); 
     DataRow dr = table.NewRow(); 
     dr["Username"] = "" + row["username"] + ""; 
     dr["Motto"] = "" + row["motto"] + ""; 
     dr["Email"] = "" + row["mail"] + ""; 
     dr["Homeroom"] = "" + row["home_room"] + ""; 
     dr["Health"] = "" + row["health"] + ""; 
     dr["Energy"] = "" + row["energy"] + ""; 
     dr["Age"] = "" + row["age"] + ""; 
     table.Rows.Add(dr); 
     return table; 
    } 
} 
public frmMain() 
{ 
    this.InitializeComponent(); 
    this.SetupBackstageContent(); 
    ribbonControl1.SelectedRibbonTabItem = ribbonTabItem1; 
    ribbonTabItem2.Text = "&USER CONTROL"; 
    ribbonTabItem4.Text = "&ADD ONS"; 

    SqlDatabaseManager.Initialize(); 
    using (SqlDatabaseClient client = SqlDatabaseManager.GetClient()) 
    foreach (DataRow row2 in client.ExecuteQueryTable("SELECT * FROM users").Rows) 
    { 
     dataGridView1.DataSource = GetResultsTable((string)row2["username"]); 
    } 
} 
+0

당신이 성취하려는 것을보기가 조금 혼란 스럽습니다. 데이터 테이블을 반복 할 수 있습니까? –

답변

0

귀하의 방법은 모든 사용자 레코드와 데이터 그리드를 채울 것인지 그냥이 코드를 고려, 잘못 :

using (SqlConnection conn = new SqlConnection("your connection string")) 
     { 
      SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM users", conn); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      dataGridView1.DataSource = ds; 
     } 
0
Conn(); 
int i = 0; 
cmd = new SqlCommand("select * from tbl_Emp", con); 
da = new SqlDataAdapter(cmd); 
dt = new DataTable(); 
da.Fill(dt); 
if (dt != null && dt.Rows.Count > 0) 
{ 
if (Dgv_Emp.Rows.Count > 0) 
{ Dgv_Emp.Rows.Clear(); } 
Dgv_Emp.Rows.Add(dt.Rows.Count); 
foreach (DataRow rw in dt.Rows) 
{ 
Dgv_Emp.Rows[i].Cells[0].Value = rw["Emp_id"].ToString(); 
Dgv_Emp.Rows[i].Cells[1].Value = rw["Emp_name"].ToString(); 
Dgv_Emp.Rows[i].Cells[2].Value = rw["Emp_desg"].ToString(); 
Dgv_Emp.Rows[i].Cells[3].Value = rw["Emp_dept"].ToString(); 
Dgv_Emp.Rows[i].Cells[4].Value = rw["Emp_gender"].ToString(); 
Dgv_Emp.Rows[i].Cells[5].Value = rw["Emp_contact"].ToString(); 
i = i + 1; 
} 
} 
0

다음 코드를 사용하십시오 : 이후

public DataTable GetResultsTable() 
    { 
     using (SqlDatabaseClient client = SqlDatabaseManager.GetClient()) 
     { 
      DataTable _userTable = client.ExecuteQueryTable("SELECT * FROM users"); 
      DataTable table = new DataTable(); 
      table.Columns.Add("Username".ToString()); 
      table.Columns.Add("Motto".ToString()); 
      table.Columns.Add("Email".ToString()); 
      table.Columns.Add("Homeroom".ToString()); 
      table.Columns.Add("Health".ToString()); 
      table.Columns.Add("Energy".ToString()); 
      table.Columns.Add("Age".ToString()); 
      foreach (DataRow _row in _userTable.Rows) 
      { 
       DataRow dr = table.NewRow(); 
       dr["Username"] = "" + _row["username"] + ""; 
       dr["Motto"] = "" + _row["motto"] + ""; 
       dr["Email"] = "" + _row["mail"] + ""; 
       dr["Homeroom"] = "" + _row["home_room"] + ""; 
       dr["Health"] = "" + _row["health"] + ""; 
       dr["Energy"] = "" + _row["energy"] + ""; 
       dr["Age"] = "" + _row["age"] + ""; 
       table.Rows.Add(dr); 
      } 

      return table; 
     } 
    } 
    public frmMain() 
    { 
     this.InitializeComponent(); 
     this.SetupBackstageContent(); 
     ribbonControl1.SelectedRibbonTabItem = ribbonTabItem1; 
     ribbonTabItem2.Text = "&USER CONTROL"; 
     ribbonTabItem4.Text = "&ADD ONS"; 

     SqlDatabaseManager.Initialize(); 

     dataGridView1.DataSource = GetResultsTable(); 
    } 

를 통해 UR 따라서 DataRow를 DataGridView 뷰의 DataSource로 전달하면 마지막 행만 DataGridview에있게됩니다. 여기에 나는 DataGridView의 DataSource를 사용하여 DataRow 대신 DataTable과 ur 코드를 변경합니다.