2014-02-08 245 views
0

我面臨的一個問題從列表中獲取特定屬性

我有一個類

public class StudentDetails 
{  
    int S_Detail_ID; 
    string address; 
    string email;  
} 

方含得到設定方法和IAM調用它收集List<StudentDetails>的功能,並將其顯示在datagridview的問題是列表返回類的所有屬性,但我只想地址和電子郵件沒有s_detail_id

這裏是代碼的功能

private void btnAddNewRowInGrid_Click(object sender, EventArgs e) 
{ 

    List<StudentDetails> lstStudentDetails = GetStudentDetails(); 
    lststudentDetails.Add(new StudentDetails()); //what to do here, studentDetails is returning all properties but i want only addres and email 
    dataGridView1.DataSource = lstStudentDetails; 
} 

和GetStudent jusst在datagridview的數行並添加一個新行

private List<StudentDetails> GetStudentDetails() 
{ 
    lstStudentDetails = new List<StudentDetails>(); 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 

     lstStudentDetails.Add(row.DataBoundItem as StudentDetails); 
    } 
    return lstStudentDetails; 
} 
+2

您可以a)隱藏一些datagridview列或b)使用Linq'.Select'查詢返回您想要顯示的屬性 - 使用哪個取決於您是否希望能夠從datagridview訪問學生ID? – stuartd

+0

@stuartd感謝先生提供有用的解決方案。我跟着隱藏列只需添加行** dataGridView1.Columns [0] .Visible = false; **和問題解決了,但我想問你,如果你提供一些關於解決方案的細節b。早些時候我已經完成** lstStudentDetails.Select(address => sd.Address())。toList()**但它不能解決問題 –

+0

@HassaanKhan爲什麼綁定列然後隱藏它們?最好不要綁定你不需要的列 –

回答

3
  1. 選擇的DataGridView在設計,點擊小三角,在控制的右上角
  2. 點擊編輯列菜單項
  3. 手動爲地址和電子郵件屬性添加列(在DataPropertyName的列屬性項中輸入屬性名稱)
  4. 列禁用自動生成

enter image description here

不能從設計師關閉列自動生成 - 它只能從代碼:

dataGridView1.AutoGenerateColumns = false; 

之後,你的代碼將工作。

0

您可以嘗試通過將其可見性設置爲false來隱藏不需要的列。

dataGridView1.Columns["S_Detail_ID"].Visible = false; 
+0

如果你檢查我的評論上面我已經這樣做了。這裏我正在嘗試探索list.select()投影 –