2016-09-30 65 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

这就是这是做什么。字典将保存文本框中的所有唯一值。如果它的唯一值被添加到字典中,那么意味着这个值已经被遇到,所以使得行可见性为假 –

+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; 
        } 
       } 
      } 
     } 

更简单的方法是,使用数据视图

//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