如何在asp.net中使用某些条件绑定gridview?
我已经在if()中写下了我的条件。我只想在网格中绑定满意的行。我怎么写呢?您不需要在数据表的行上绑定如何在asp.net中使用某些条件绑定gridview?,asp.net,c#-4.0,Asp.net,C# 4.0,我已经在if()中写下了我的条件。我只想在网格中绑定满意的行。我怎么写呢?您不需要在数据表的行上绑定网格in循环,而是根据需要的条件过滤数据表,并绑定一次。您可以从数据表中获取DataView,并使用其属性应用日期过滤器 DataTable dtbind = new DataTable(); dtbind = objvehicleBAL.GetTaxdetails(); for (int i = 0; i < dtbind.Rows.Cou
网格
in循环,而是根据需要的条件过滤数据表
,并绑定一次。您可以从数据表中获取DataView
,并使用其属性应用日期过滤器
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();
}
}
无需每次绑定每个
行
并调用数据绑定
方法。
只需使用以下命令:
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();
希望这对你有帮助 您可以使用
DataTable
的Select
方法以及筛选表达式来获取符合条件的行。然后,将其绑定到您的GridView
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();
}
string filterExp=“todate
数据表dtbind1=objvehicleBAL.GetTaxdetails();
DataTable dtbind2=新DataTable();
foreach(dtbind1.Rows中的数据行)
{
DateTime dt1=DateTime.ParseExact(行[“todate”].ToString(),“dd/MM/yyyy”,null);
如果(dt1<((DateTime.Now.AddDays(15)))
dtbind2.Rows.Add(row);
}
}
GVTax.DataSource=dtbind2;
GVTax.DataBind();
您可以创建另一个datatable,并在第二个datatable中填充满足条件的行,并将gridview与第二个datatable绑定(已筛选行)
我收到以下错误:“数据源是无效类型。它必须是IListSource、IEnumerable或IDataSource”,以及上述代码,我如何解决它。我认为OP需要检查每个数据表行上的条件,并将其绑定到gridview。您认为在sql查询中添加筛选器会影响性能吗?尽管此解决方案可能有效!但我更喜欢使用DataView rowfilter,或者通过在sql查询中添加where子句来过滤服务器上的记录(这可以防止循环每一行并对其执行操作)。我认为您必须处理dtbind1或将其设置为null,因为它以后不再使用,因为您在dtbind2中得到的结果是正确的。。
string filterExp = "todate < dateadd(day,15,getdate())";
var filtered = dtBind.Select(filterExp);
GVTax.DataSource = filtered ;
GVTax.DataBind();
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();
dttableNew = dttableOld.Clone();
foreach (DataRow drtableOld in dttableOld.Rows)
{
if (/*put some Condition */)
{
dtTableNew.ImportRow(drtableOld);
}
}
GVTax.DataSource = dtTableNew;
GVTax.DataBind();