2013-06-20 29 views
2

我想要做的是從數據庫中檢索患者的詳細信息,然後根據在文本框中輸入的值,它將更新患者的詳細信息,但如果文本框爲空,則將現有的詳細信息分配給文本框我覺得很愚蠢。有效更新表格的詳細信息?

你會建議我做些什麼來改進下面的代碼,使其更有效或更少重複?

代碼:

client = new ServiceReference1.Service1Client(); 

pat = client.GetPatientbyID(txtUpdatePatientID.Text); 
grdView.DataSource = pat; 
grdView.DataBind(); 

if (txtUpdateForename.Text == "") 
       txtUpdateForename.Text = pat[0].Forename; 
if (txtUpdateSurname.Text == "") 
       txtUpdateSurname.Text = pat[0].Surname; 
if (txtUpdateStreet.Text == "") 
       txtUpdateStreet.Text = pat[0].Street; 
if (txtUpdateTown.Text == "") 
       txtUpdateTown.Text = pat[0].Town; 
if (txtUpdateCity.Text == "") 
       txtUpdateCity.Text = pat[0].City; 
if (txtUpdateDOB.Text == "") 
       txtUpdateDOB.Text = pat[0].DOB.ToString(); 
if (txtUpdateHouseNumber.Text == "") 
       txtUpdateHouseNumber.Text = pat[0].House_number; 
if (txtUpdateMobile.Text == "") 
       txtUpdateMobile.Text = pat[0].Mobile; 

client.UpdateAllDetails(txtUpdatePatientID.Text, txtUpdateForename.Text, 
         txtUpdateSurname.Text, txtUpdateStreet.Text, txtUpdateTown.Text, 
         txtUpdateCity.Text, Convert.ToDateTime(txtUpdateDOB.Text), 
         txtUpdateHouseNumber.Text, txtUpdateMobile.Text); 
client.Close(); 

GetPatients(txtUpdatePatientID); 
+0

有些事情可以使代碼減少重複性和維護性,但如果您的意思是「高效」,它會運行得更快,您無法做很多工作來加速實現特定的代碼片段。 – StriplingWarrior

+0

您可以建議如何減少代碼的重複性? – user2495628

+0

類似於Richard的建議,並將'pat [0]'提取到變量中。 – StriplingWarrior

回答

3

正如指出的詮釋他的意見,我不認爲你可以使這個快得多;如果這是你的邏輯,這是需要做的。

你可以提取if檢查和條件設置成一個方法來整理這個代碼的外觀也許吧?

喜歡的東西:

private void SetIfNotEmpty(TextBox textBoxToSet, string value) 
{ 
    if (textBoxToSet.Text == "") 
    textBoxToSet.Text = value; 
} 

然後更換

 if (txtUpdateForename.Text == "") 
      txtUpdateForename.Text = pat[0].Forename; 
     if (txtUpdateSurname.Text == "") 
      txtUpdateSurname.Text = pat[0].Surname; 
     if (txtUpdateStreet.Text == "") 
      txtUpdateStreet.Text = pat[0].Street; 
     if (txtUpdateTown.Text == "") 
      txtUpdateTown.Text = pat[0].Town; 
     if (txtUpdateCity.Text == "") 
      txtUpdateCity.Text = pat[0].City; 
     if (txtUpdateDOB.Text == "") 
      txtUpdateDOB.Text = pat[0].DOB.ToString(); 
     if (txtUpdateHouseNumber.Text == "") 
      txtUpdateHouseNumber.Text = pat[0].House_number; 
     if (txtUpdateMobile.Text == "") 
      txtUpdateMobile.Text = pat[0].Mobile; 

SetIfNotEmpty(txtUpdateForename, pat[0].Forename); 
SetIfNotEmpty(txtUpdateSurname.Text, pat[0].Surname); 
SetIfNotEmpty(txtUpdateStreet.Text, pat[0].Street); 
SetIfNotEmpty(txtUpdateTown.Text, pat[0].Town); 
SetIfNotEmpty(txtUpdateCity.Text, pat[0].City); 
SetIfNotEmpty(txtUpdateDOB.Text, pat[0].DOB.ToString()); 
SetIfNotEmpty(txtUpdateHouseNumber.Text, pat[0].House_number); 
SetIfNotEmpty(txtUpdateMobile.Text, pat[0].Mobile); 

至於更高級別的設計上來看,如果這些是WPF文本框,你有沒有想過使用數據綁定?

+0

謝謝,我認爲我的問題是我在複雜的事情。 – user2495628

+0

沒有任何問題,重構的位置不會幫助=) – Dutts

+0

從來沒有聽說過WPF文本框,請你詳細說明一下嗎? – user2495628