我创建了这个方法,因此它会更新页面上的LABEL。我们这里有一堆复选框,表明这个人是否有任何限制。当用户登录并看到复选框时,我希望标签显示已检查的标签,以便用户更容易查看该人员的限制。
我是C#和ASP.NET的新手,我想知道的是,是否有更好/更容易/更有效的方法来解决这个问题?我发现的第一件事是String.Concat,这就是我在下面的代码中使用它的原因。此外,我似乎无法获得行返回(a(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 :(得分: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这样的数据绑定控件
<强>参考强>
答案 1 :(得分:1)
是的,如果您不使用它,可以在CheckBox的属性(如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'有你想要的字符串;
答案 2 :(得分:0)
在asp.net中尝试CheckBoxList控件。示例:http://www.w3schools.com/aspnet/showasp.asp?filename=demo_checkboxlist
答案 3 :(得分: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());