Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串中存在重复值:需要有关逻辑的帮助吗_C#_Asp.net_Telerik - Fatal编程技术网

C# 字符串中存在重复值:需要有关逻辑的帮助吗

C# 字符串中存在重复值:需要有关逻辑的帮助吗,c#,asp.net,telerik,C#,Asp.net,Telerik,以下代码中的数据表“dtTypeId”返回2列类型名称和ID,如下所示:- TypeId TypeName 1 Type1 2 Type2 3 Type3 问题在于,在组合框中,只有两个项目被选中,即“Type1”和“Type2”,但在Radcombobox的文本中,它显示的是文本 作为:- 类型1,类型1,类型1,类型1,类型2,类型2,类型2,类型2。 我希望组合框的文本为Type1,Type2(仅那些打了复选标记的文本)。为什么会有重复的值 下面的逻辑有

以下代码中的数据表“dtTypeId”返回2列类型名称和ID,如下所示:-

TypeId TypeName
1      Type1  
2      Type2
3      Type3
问题在于,在组合框中,只有两个项目被选中,即“Type1”和“Type2”,但在Radcombobox的文本中,它显示的是文本

作为:-

类型1,类型1,类型1,类型1,类型2,类型2,类型2,类型2。 我希望组合框的文本为Type1,Type2(仅那些打了复选标记的文本)。为什么会有重复的值

下面的逻辑有什么问题?请帮忙,谢谢

foreach (RadComboBoxItem item1 in radComboBoxTypes.Items)
                {

                    Label lblTypeId = item1.FindControl("lblTypeId") as Label;
                    CheckBox chkType = item1.FindControl("chkType") as CheckBox;
                    Label lblTypeNames = item1.FindControl("lblTypeNames") as Label;
                    bllMyClass objMyClass = new bllMyClass();
                    objMyClass.TextID = int.Parse(lblTextID.Text);
                    DataTable dtTypeId = new DataTable();
                    dtTypeId = objMyClass.GetTypesByTextID();
                    if (dtTypeId.Rows.Count > 0)
                    {

                        foreach (RadComboBoxItem item2 in radComboBoxTypes.Items)
                        {
                            for (int i = 0; i < dtTypeId.Rows.Count; i++)
                            {
                                if (lblTypeId.Text == dtTypeId.Rows[i]["TypeId"].ToString())
                                {
                                    chkType.Checked = true;
                                    checkedTextType += lblTypeNames.Text + ", ";
                                }
                            }

                            if (chkType.Checked == true)
                            {

                                checkedTextType += lblTypeNames.Text + ", ";

                            }
                            radComboBoxTypes.Text = checkedTextType;
                        }

                    }

                }
foreach(radcomboxTypes.Items中的radcomboxItem1)
{
标签lblTypeId=item1.FindControl(“lblTypeId”)作为标签;
复选框chkType=item1.FindControl(“chkType”)作为复选框;
标签lblTypeNames=item1.FindControl(“lblTypeNames”)作为标签;
bllMyClass objMyClass=新bllMyClass();
objMyClass.TextID=int.Parse(lblTextID.Text);
DataTable dtTypeId=新DataTable();
dtTypeId=objMyClass.GetTypesByTextID();
如果(dtTypeId.Rows.Count>0)
{
foreach(radComboBoxTypes.Items中的RadComboxItem2)
{
for(int i=0;i

@Bolu:我遵循了你的方法,但它没有正常工作。它现在在组合框中显示的文本为type1type1,type1type1,type1type1,type2type2,type2type2,type2type2,

@博鲁

这一行出现错误…checkedTextType+=checkedTextType==string.Empty?lblTypeNames.Text:“,”+lblTypeNames.Text;上面写着“意外字符”:“

通过快速查看代码,我可以看到以下问题:您需要更新内部foreach循环中的标签/复选框值,或者在找到第一个匹配项时中断

foreach (RadComboBoxItem item1 in radComboBoxTypes.Items)//for item1
{
      Label lblTypeId = item1.FindControl("lblTypeId") as Label; //lblTypeId.Text=="1"
      Label lblTypeNames = item1.FindControl("lblTypeNames") as Label; //lblTypeNames.Text=="Type1"
      .....
      foreach (RadComboBoxItem item2 in radComboBoxTypes.Items)//item1 || <item2>
      {
             for (int i = 0; i < dtTypeId.Rows.Count; i++)
             {
                  if (lblTypeId.Text == dtTypeId.Rows[i]["TypeId"].ToString())//true || <true>
                  {
                      chkType.Checked = true;
                      checkedTextType += lblTypeNames.Text + ", ";//checkedTextType=="Type1" || <checkedTextType=="Type1, Type1, Type1">
                  }
              }

              if (chkType.Checked == true)//true || true
              {
                   checkedTextType += lblTypeNames.Text + ", "; //checkedTextType =="Type1, Type1" || <checkedTextType =="Type1, Type1, Type1, Type1">
              }

       }
}

//Then when out loop goes to item2, you will have "Type2, Type2, Type2, Type2" added to your checkedTextType
foreach(radcomboxTypes.Items中的radcomboxItem item1)//用于item1
{
标签lblTypeId=item1.FindControl(“lblTypeId”)作为标签;//lblTypeId.Text==“1”
标签lblTypeNames=item1.FindControl(“lblTypeNames”)作为标签;//lblTypeNames.Text==“Type1”
.....
foreach(radcomboxTypes.Items中的radcomboxItem2)//item1 | |
{
for(int i=0;i
同样,通过使用debug可以很容易地识别问题

编辑:您应该做什么:

  //pseudo code
    foreach (RadComboBoxItem item1 in radComboBoxTypes.Items)
    {
              Label lblTypeId = item1.FindControl("lblTypeId") as Label;
              CheckBox chkType = item1.FindControl("chkType") as CheckBox;
              Label lblTypeNames = item1.FindControl("lblTypeNames") as Label;
              bllMyClass objMyClass = new bllMyClass();
              objMyClass.TextID = int.Parse(lblTextID.Text);
              DataTable dtTypeId = new DataTable();
              dtTypeId = objMyClass.GetTypesByTextID();
              for (int i = 0; i < dtTypeId.Rows.Count; i++)
              {
                    if (lblTypeId.Text == dtTypeId.Rows[i]["TypeId"].ToString())
                    {
                       chkType.Checked = true;
                       checkedTextType += checkedTextType==string.Empty?lblTypeNames.Text:", " + lblTypeNames.Text ; 
                       break;                                 
                    }
              } 
     }
     radComboBoxTypes.Text = checkedTextType;
//伪代码
foreach(radComboBoxTypes.Items中的RadComboxItem1)
{
标签lblTypeId=item1.FindControl(“lblTypeId”)作为标签;
复选框chkType=item1.FindControl(“chkType”)作为复选框;
标签lblTypeNames=item1.FindControl(“lblTypeNames”)作为标签;
bllMyClass objMyClass=新bllMyClass();
objMyClass.TextID=int.Parse(lblTextID.Text);
DataTable dtTypeId=新DataTable();
dtTypeId=objMyClass.GetTypesByTextID();
for(int i=0;i
快速查看您的代码,我可以看到以下问题:您需要更新内部foreach循环中的标签/复选框值,或者在找到第一个匹配项时中断

foreach (RadComboBoxItem item1 in radComboBoxTypes.Items)//for item1
{
      Label lblTypeId = item1.FindControl("lblTypeId") as Label; //lblTypeId.Text=="1"
      Label lblTypeNames = item1.FindControl("lblTypeNames") as Label; //lblTypeNames.Text=="Type1"
      .....
      foreach (RadComboBoxItem item2 in radComboBoxTypes.Items)//item1 || <item2>
      {
             for (int i = 0; i < dtTypeId.Rows.Count; i++)
             {
                  if (lblTypeId.Text == dtTypeId.Rows[i]["TypeId"].ToString())//true || <true>
                  {
                      chkType.Checked = true;
                      checkedTextType += lblTypeNames.Text + ", ";//checkedTextType=="Type1" || <checkedTextType=="Type1, Type1, Type1">
                  }
              }

              if (chkType.Checked == true)//true || true
              {
                   checkedTextType += lblTypeNames.Text + ", "; //checkedTextType =="Type1, Type1" || <checkedTextType =="Type1, Type1, Type1, Type1">
              }

       }
}

//Then when out loop goes to item2, you will have "Type2, Type2, Type2, Type2" added to your checkedTextType
foreach(radcomboxTypes.Items中的radcomboxItem item1)//用于item1
{
标签lblTypeId=item1.FindControl(“lblTypeId”)作为标签;//lblTypeId.Text==“1”
标签lblTypeNames=item1.FindControl(“lblTypeNames”)作为标签;//lblTypeNames.Text==“Type1”
.....
foreach(radcomboxTypes.Items中的radcomboxItem2)//item1 | |
{
for(int i=0;i