2016-07-19 9 views
0

In meinem DataGridView verketten, ich habe Feld als Borrower name und ich bin ein Formular mit den First Name, Middle Name und Last Name zu sammeln. Also was ich will, ist First Name, Middle Name und Last Name Werte wie Borrower name in meinem DataGridView zu setzen.Wie drei Felder als ein und Anzeige in einer Datagridview Tabelle

Ich habe so etwas gemacht, das im Moment nur First Name zeigt.

datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString(); 

Ich versuchte Einzelteilname "first_name+, middle_name+, last_name" aber die Programmunterbrechungen zu ändern.

Wie kann ich das erreichen? Damit kann ich First Name, Middle Name und Last Name Werte wie Borrower name verketten.

Hier ist meine vollständige Code:

private void DisplayData() 
{ 
    sda = new MySqlDataAdapter("Select * from user_reg where user_type = 'Member' ",conn); 
    dt = new DataTable(); 
    sda.Fill(dt); 
    datagrid_borrowers.Rows.Clear(); 
    foreach (DataRow item in dt.Rows) 
    { 
     int n = datagrid_borrowers.Rows.Add(); 
     datagrid_borrowers.Rows[n].Cells[0].Value = (n + 1).ToString(); 
     datagrid_borrowers.Rows[n].Cells[1].Value = item["user_id"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[3].Value = item["address"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[4].Value = item["sex"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[5].Value = item["nic_number"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[6].Value = item["contact_number"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[7].Value = item["email_address"].ToString(); 
    } 
} 
+1

fügen Sie ein weiteres Feld in sql query hinzu (mit korrektem Synatx für die Verkettung von Strings, natürlich), zB: 'Select *, Vorname + mittlerer_name + Nachname von ...'. und auch: Sie können 'DataSource' -Eigenschaft (' datagrid_borrowers.DataSource = dt; ') verwenden, anstatt Zeilen in einer Schleife hinzuzufügen – ASh

+1

Dies ist die schmutzigste Art der Arbeit mit' DataGridView'. Warum verwenden Sie keine Datenbindung? Dann können Sie elegantere Lösungen für das Problem verwenden. –

Antwort

0

Try this:

datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString() 
            + " " + item["middle_name"].ToString() 
            + " " + item["last_name"].ToString(); 
0
private void DisplayData() 
{ 
    sda = new MySqlDataAdapter("Select * from user_reg where user_type = 'Member' ",conn); 
    dt = new DataTable(); 
    sda.Fill(dt); 
    datagrid_borrowers.Rows.Clear(); 
    foreach (DataRow item in dt.Rows) 
    { 
     int n = datagrid_borrowers.Rows.Add(); 
     datagrid_borrowers.Rows[n].Cells[0].Value = (n + 1).ToString(); 
     datagrid_borrowers.Rows[n].Cells[1].Value = item["user_id"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[2].Value = item["first_name"].ToString() + item["middle_name"].ToString() + item["last_name"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[3].Value = item["address"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[4].Value = item["sex"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[5].Value = item["nic_number"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[6].Value = item["contact_number"].ToString(); 
     datagrid_borrowers.Rows[n].Cells[7].Value = item["email_address"].ToString(); 
    } 
} 
0

Sie haben Datentabelle Adapter verwendet, um Daten aus der Datenbank zu holen, so ergibt sich eine Sammlung von DataRow Objekte sein

für den Zugriff auf Felder, die in jedem Objekt gespeichert sind, sollten Sie Indexer verwenden, wie Sie in sehen können diese link müssen Sie nur einen Spaltennamen an diesen Indexer übergeben.

der einfachste Weg ist String.Format, da diese

datagrid_borrowers.Rows[n].Cells[2].Value = String.Format("{0} {1} {2}", 
    item["first_name"].ToString() 
    item["Middle_name"].ToString() 
    item["Last_name"].ToString() 
); 

diese Weise Ihren Code sauber sein wird, zu nutzen und besser lesbar.

+0

Ich wusste nicht darüber, werde versuchen, dies zu verwenden. Wirklich wie der Code. Danke –

0

Nutzen Sie die volle Kraft der Datenbindung!

Verwenden Sie auch DataColumn.Expression Eigenschaft.

sda = new MySqlDataAdapter("Select * from user_reg where user_type = 'Member' ",conn); 
dt = new DataTable(); 
sda.Fill(dt); 

// Add full_name column with expression. 
dt.Columns.Add("Full Name", typeof(string), 
    "first_name + ' ' + middle_name + ' ' + last_name"); 

datagrid_borrowers.DataSource = dt; // data binding 

// Hide unnecessary columns. 
datagrid_borrowers.Columns["first_name"].Visible = false; 
datagrid_borrowers.Columns["middle_name"].Visible = false; 
datagrid_borrowers.Columns["last_name"].Visible = false; 

Beachten Sie, dass Sie sollten nicht manuell Spalten in DataGridView erstellt werden.

+0

Ich werde dieses @Alexander überprüfen, aber warum sollte ich Spalten nicht manuell erstellen? –

+0

@DilumJayawardhana - Weil die Spalten automatisch erstellt werden. –