2012-05-09 27 views
3

之間傳遞數據的更有效的方式我有稍後保存到數據庫中的許多「創建新的[XXX]」的形式(包含文本框,組合框,日期時間picekrs等)的程序。爲了查看這些數據,我使用了從數據庫中填充了datagridview的相應表單「view [xxx]」。datagridview的和形式

當用戶點擊在DataGridView領域中,數據被認爲被送回原來的「創建」的形式。

到現在爲止我已經通過從DataGridView通過全行的數據超載的「創造」形式的構造做:

例如:

,查看錶單:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex > -1) 
     { 
      ID = dataGridView1.Rows[e.RowIndex].Cells[0].FormattedValue.ToString(); 
      string posName = dataGridView1.Rows[e.RowIndex].Cells[1].FormattedValue.ToString(); 
      string posDesc = dataGridView1.Rows[e.RowIndex].Cells[2].FormattedValue.ToString(); 

      frmNewStaffPosition frm = new frmNewStaffPosition(posName, posDesc); 

      frm.Show(); 
frm.NewTypePositionAdded += new frmNewStaffPosition.AddNewTypeOfStaffPosition(frm_NewTypePositionAdded); 

CREATE FORM:

public frmNewStaffPosition(string pos, string desc) 
    { 
     InitializeComponent(); 
     tbPositionName.Text = pos; 
     tbNewStaffPositionDecription.Text = desc; 



    } 

雖然這個工作,我不認爲它的第e最好的解決方案,特別是如果從VIEW傳遞的數據包含許多列。有沒有更優雅的解決方案,即只通過所選行的PK並直接從數據庫填充CREATE表單?

如果多數民衆贊成我通過My​​SQL連接器使用MySQL數據庫。

+0

你有沒有找到你最好的方式? – Turbot

回答

0

如果有小於數百列,只要你的列會與數據的幾MB的BLOB我的猜測是,這是不是你的程序的性能障礙。如果你傳遞了幾百(或幾千)行,那麼這將是一個完全不同的問題,但即使你有200左右的列傳遞大量數據給計算機也不算什麼,它可以做很多很多次你無法注意的時間。

不要過早優化。您的程序運行緩慢以完成其工作嗎?如果不是,一點都不麻煩,你就完成了。如果是這樣,使用一個分析器來查看哪些東西比它應該花費的時間更長,然後查看優化。

哦,如果你有一個以上或兩列它可能是最好的,使一類爲每列字段,填充該類的實例,然後將它傳遞。處理比許多參數要容易得多。

0

取決於負責人。 傳遞他們的密鑰是一種方式,但你必須添加數據庫代碼到表單。事實上,如果你使用的是FormattedValue,那麼你將不得不重新實現它。

你可以敲了一類把數據並通過在,並委託一切,並從東西類,或者更好的是它實現的接口。

或者你可以保持原樣,看到所有這些都在做的事情是移動/隱藏你現在的混亂位。

如果事實證明,一些你的表格是使用公共的數據分組,那麼它可能是值得考慮的,如果不是,不要以爲我會打擾我。

這就是說我會更舒適地傳遞來自網格底層的數據源,即數據行,否則對於任何非字符串值,您將要轉換/解析爲或不從,除非表單僅處理數據爲字符串。

0

通常我會去與這些基本規則...

1)如果你正在尋找/編輯特定的記錄數據,只有關鍵數據傳遞給構造下一個表格。 2)如果你使用默認值創建一個新數據,把它們放到一個類中。

+0

嗯...「Noob」的問題然後:如何很好地填寫表格與數據庫中的數據?我可以創建SQL語句(「SELECT * FROM xxx WHERE ID = x」)並讀取行,但是接下來我需要一個需要剪切的長字符串,對吧? – Yasskier

+0

呃,nvm,我可以按列讀取/ facepalm – Yasskier

+0

如果您使用的是winform,則可以使用BindingSource類創建結果數據集並委派給顯示成員的所有UI。 – Turbot

相關問題