如何在asp.net中绑定gridview与某些条件?

时间:2014-06-19 04:43:05

标签: asp.net c#-4.0

    DataTable dtbind = new DataTable();
        dtbind = objvehicleBAL.GetTaxdetails();

        for (int i = 0; i < dtbind.Rows.Count; i++)
        {
            DateTime dt1 = DateTime.ParseExact(dtbind.Rows[i]["todate"].ToString(), "dd/MM/yyyy", null);
            if (dt1 < ((DateTime.Now.AddDays(15))))
            {
                GVTax.DataSource = dtbind.Rows[i];
                GVTax.DataBind();

            }

        }

我在if()中写了条件。我想在网格中只绑定满意的行。我怎么写这个?

5 个答案:

答案 0 :(得分:2)

您不需要在数据行的行中绑定Grid循环,而是通过所需的条件过滤DataTable并将其绑定一次。您可以从数据表中获取DataView并使用其属性DataView.RowFilter来应用日期过滤器。

dtbind = objvehicleBAL.GetTaxdetails();  //Filter the record in GetTaxdetails 
DataView dv = dtbind.DefaultView; //or use DataView with RowFilter
dv .RowFilter = "todate = #"  + DateTime.Now.AddDays(15).ToString() + "#";
GVTax.DataSource = dv;
GVTax.DataBind();

答案 1 :(得分:1)

每次都不需要绑定每个row并调用DataBind方法。 只需使用以下内容:

protected void BindGrid()
{
        DataTable dtbind = new DataTable();
        dtbind=objvehicleBAL.GetTaxdetails();//get the rows filtered in SQL
        if(dtbind!=null && dtbind.Rows.Count>0)//always check for null for preventing exception
        {
          GVTax.DataSource = dtbind;
        }
        GVTax.DataBind();   
}

希望这能帮到你!

答案 2 :(得分:1)

您可以使用Select DataTable方法和过滤表达式来获取符合条件的行。然后,将其绑定到您的GridView

string filterExp = "todate < dateadd(day,15,getdate())";
var filtered = dtBind.Select(filterExp);
GVTax.DataSource = filtered ;
GVTax.DataBind();

答案 3 :(得分:1)

 DataTable dtbind1 = objvehicleBAL.GetTaxdetails();
 DataTable dtbind2 = new DataTable();

 foreach (DataRow row in dtbind1.Rows)
 {
     DateTime dt1 = DateTime.ParseExact(row["todate"].ToString(), "dd/MM/yyyy", null);
     if (dt1 < ((DateTime.Now.AddDays(15))))
          dtbind2.Rows.Add(row);
     }
 }

 GVTax.DataSource = dtbind2;
 GVTax.DataBind();

答案 4 :(得分:0)

您可以创建另一个数据表并在第二个数据表中填充满足条件的行,并将gridview与第二个数据表绑定(具有已过滤的行)

dttableNew  = dttableOld.Clone();  

            foreach (DataRow drtableOld in dttableOld.Rows)
            {
               if (/*put some Condition */)
               {
                  dtTableNew.ImportRow(drtableOld);
               }
            }

            GVTax.DataSource = dtTableNew;

           GVTax.DataBind();