2013-03-01 152 views
3

我創建了這個方法,所以它會更新頁面上的LABEL。我們這裏有一堆複選框,表明該人是否有任何限制。當用戶登錄並看到複選框時,我希望標籤顯示已檢查的標籤,以便用戶更容易查看該用戶具有哪些限制。有沒有更好的方法來做到這一點? ASP.NET/C#/代碼隱藏

我是C#和ASP.NET的新手,我想知道的是,有沒有更好/更簡單/更有效的方法來解決這個問題?我發現的第一件事是String.Concat,這就是爲什麼我在下面的代碼中使用它。此外,我似乎無法得到行返回(一(br /))在後面的代碼中工作(我明白,(br /)不會在後面的代碼中工作)。我已經嘗試了很多不同的方法,而且都沒有工作,這就是爲什麼我在字符串中拋出COMMA的原因。有什麼建議麼?

protected void LblLimitsLabel() 
{ 
    String strBend = "", strDryDust = "", strStanding = "", strHearing = "", strHeights = "", strHepatitis = "", strLifting = "", strMachines = "", strPulling = "", strPushing = "", strReaching = "", strSeizures = "", strSuddenTemp = "", strVisual = "", strWalking = "", strWheelchair = "", strHelmet = "", strOther = ""; 

    if (chkBend.Checked) 
     strBend = "Bend/Stoop, "; 

    if (chkDryDusty.Checked) 
     strDryDust = "Dry/Dusty, "; 

    if (chkHearing.Checked) 
     strHearing = "Hearing, "; 

    if (chkHeights.Checked) 
     strHeights = "Heights, "; 

    if (chkHepatitis.Checked) 
     strHepatitis = "Hepatitis, "; 

    if (chkLifting.Checked) 
     strLifting = "Lifting, "; 

    if (chkMachines.Checked) 
     strMachines = "Machines, "; 

    if (chkPulling.Checked) 
     strPulling = "Pulling, "; 

    if (chkPushing.Checked) 
     strPushing = "Pushing, "; 

    if (chkReaching.Checked) 
     strReaching = "Reaching, "; 

    if (chkSeizures.Checked) 
     strSeizures = "Seizures, "; 

    if (chkStanding.Checked) 
     strStanding = "Standing, "; 

    if (chkSuddenTemp.Checked) 
     strSuddenTemp = "Sudden Temp. Changes, "; 

    if (chkVisual.Checked) 
     strVisual = "Visual, "; 

    if (chkWalking.Checked) 
     strWalking = "Walking, "; 

    if (chkWheelchair.Checked) 
     strWheelchair = "Wheelchair, "; 

    if (chkHelmet.Checked) 
     strHelmet = "Helmet, "; 

    strOther = TextBox1.Text; 

    LblLimits.Text = String.Concat(strBend, strDryDust, strStanding, strHearing, strHeights, strHepatitis, strLifting, strMachines, strPulling, strPushing, strReaching, strSeizures, strSuddenTemp, strVisual, strWalking, strWheelchair, strHelmet, strOther); 
} 
+0

究竟什麼是你的問題? – 2013-03-01 19:07:51

+0

我正在尋找一個更有效的方式來做到這一點。什麼是一個程序員去這個最好的方式..看起來像我在下面得到了幾個答案..我也想知道如何在單詞之間獲得換行符.. – user1911069 2013-03-01 19:15:40

回答

3
  1. 使用StringBuilder建立一個字符串。使用AppendLine創建一個新行。
  2. 把你的if語句放在單行上。如果像這樣的陳述將會更容易閱讀。
  3. 如果您需要在ASP.NET標籤中出現新行,您需要嵌入<br/>標籤。

    StringBuilder SB = new StringBuilder(); 
    
    if (chkBend.Checked) SB.AppendLine("Bend/Stoop, "); 
    if (chkDryDusty.Checked) SB.AppendLine("Dry/Dusty, "); 
    // and so on 
    
    SB.Append(TextBox1.Text); 
    LblLimits.Text = SB.ToString(); 
    

當你得到更舒適的用C#和ASP.NET,我建議移動到數據綁定控件像CheckBoxList

參考

+0

,這也使得他關於line break的問題很容易做到,也許在SB.Append()中增加一個換行符。因爲他真的希望它不是逗號 – 2013-03-01 19:12:09

+0

好點,我加了一個建議,使用AppendLine如果他發現它適合 – 2013-03-01 19:15:50

+0

我感到困惑的
標籤的嵌入。我不能在後面的代碼中這樣做,對吧?理想情況下,我希望每個項目都列在一個新行中。我真的很喜歡這種方法.. – user1911069 2013-03-01 19:30:10

1

是的,如果您不使用它,您可以設置您想添加到CheckBox屬性的字符串中的Text,例如ToolTip。 然後你可以使用這個循環:

string s = ""; 
     foreach (Control item in this.Controls) 
     { 
      if (item is CheckBox) 
      { 
       CheckBox temp = item as CheckBox; 
       if (temp.Checked) 
       { 
        s += temp.ToolTip + ", "; 
       } 
      } 
     } 
s = s.Substring(0,s.length-3); 

的「s」有你想要的字符串;

+0

一般而言,使用連接構建列表的問題是我們必須處理最後一個尾隨分隔符。 – Larry 2013-03-01 19:25:21

+0

@Laurent不,你可以在Substring()結尾 – 2013-03-01 19:44:46

0

您可以使用較少的行代碼實現相同的結果。我喜歡用這種方式處理List,因爲我不必處理尾隨分隔符。

var checkBoxes = new CheckBox[] {chkBend, chkDryDusty, chkHearing, ...} 
var values = new string[] {"Bend/Stoop", "Dry/Dusty", "Hearing", ...} 

var selectedEntries = new List<string>(); 

for(var i = 0; i < checkBoxes.Length; i++) 
{ 
    if (checkBoxes[i].Checked) 
     selectedEntries.Add(values[i]); 
} 

if (TextBox1.Text != "") 
    selectedEntries.Add(TextBox1.Text); 

LblLimits.Text = string.Join(", ", selectedEntries.ToArray()); 

正如評論中提出的,我認爲多重複選框是最好的解決方案。

如果你需要一個換行符:

LblLimits.Text = string.Join("<br/>", selectedEntries.ToArray()); 
+0

謝謝。我也會嘗試這個。我知道得越多越好。 – user1911069 2013-03-01 19:38:49

相關問題