2016-09-30 2 views
-1

я написал метод, какВсе строки невидимы в виде сетки

 private void AvoidDuplicate() 
    { 
     for (int i = 0; i < grdView.Rows.Count; i++) 
     { 
      TextBox txtoldvalue = grdView.Rows[i].FindControl("txtLicenseNumber") as TextBox; 
      string oldvalue = txtoldvalue.Text.ToString(); 

      for (int j = 0; j < grdView.Rows.Count; j++) 
      { 
       TextBox txtnewvalue = grdView.Rows[j].FindControl("txtLicenseNumber") as TextBox; 
       string newvalue = txtnewvalue.Text.ToString(); 
       if (oldvalue == newvalue) 
       { 
        grdView.Rows[j].Visible = false; 
       } 
      } 
     } 
    } 

Эта функция вызывается при загрузке страницы. Проблема в том, что он делает все строки в gridview невидимыми. Я хочу проверить только, если есть текстовое поле с одинаковыми значениями, только одна из строк должна стать невидимой. Пожалуйста, помогите

+0

Пожалуйста Помогите !!! – Nida

ответ

0

попробуйте использовать словарь. чтобы получить все уникальные значения, то проверьте, если словарь содержит значение, если не сделать его невидимым

private void AvoidDuplicate() 
{ 
    Dictionary<string,string> checkdictionary=new Dictionary<string,string>(); 

    for (int i = 0; i < grdView.Rows.Count; i++) 
    { 
     TextBox txtnewvalue = grdView.Rows[i].FindControl("txtLicenseNumber") as TextBox; 
      string newvalue = txtnewvalue.Text.ToString(); 
     if(!checkdictionary.ContainsKey(newvalue)) 
     { 
      checkdictionary[newvalue]="something"; 
     } 
     else 
     { 
      grdView.Rows[i].Visible = false; 
     } 

    } 
} 
+0

Спасибо за ответ, но я хочу сравнить значения, уже существующие в текстовых полях сетки ... Пожалуйста, помогите мне – Nida

+0

, что это делает. словарь будет содержать все уникальные значения, которые находятся в текстовых полях. Если его уникальное значение добавлено в словарь else, это означает, что это значение уже было встречено, поэтому сделайте видимость строки false –

+0

Можете ли вы, пожалуйста, показать, как я буду присваивать значения в словаре ... pleasw – Nida

-1

Попробуйте

private void AvoidDuplicate() 
     { 
      for (int i = 0; i < grdView.Rows.Count; i++) 
      { 
       TextBox txtoldvalue = grdView.Rows[i].FindControl("txtLicenseNumber") as TextBox; 
       string oldvalue = txtoldvalue.Text.ToString(); 

       for (int j = 0; j < grdView.Rows.Count; j++) 
       { 
        if(j == i) 
        continue; 
TextBox txtnewvalue = grdView.Rows[j].FindControl("txtLicenseNumber") as TextBox; 
        string newvalue = txtnewvalue.Text.ToString(); 
        if (oldvalue == newvalue) 
        { 
         grdView.Rows[j].Visible = false; 
        } 
       } 
      } 
     } 

Легче всего было бы использовать DataView

//populate your datatable dt. List your columns in ToTable method that you want to include in uniqueness of row. 

    dt = dt.DefaultView.ToTable(true, "LicenseNumber"); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
+0

Извините, код выше, в котором цикл реализован, не работает ... пожалуйста, помогите мне !!! – Nida

Смежные вопросы