在Sql列中循环
本文关键字:循环 Sql | 更新日期: 2023-09-27 18:20:20
我正在C#中使用一个网格视图,我想知道是否有一种有效的方法可以使用一个数据源而不是三个。现在我有一个if语句,它根据dropdownlist中的值ddlType来选择数据源。
if (ddlType.Text == "Confirmation")
gvMailMergeExport.DataSourceID = "SqlDSConfirmation";
else if (ddlType.Text == "Cancellation")
gvMailMergeExport.DataSourceID = "SqlDSCancellation";
else
gvMailMergeExport.DataSourceID = "SqlDSPreArrival";
因为每个数据库都需要查看同一表中的不同列,以决定显示哪些数据。使用的三列是ConfirmationEmail、CancellationEmail和PreArrivalEmail。这三列中的每一列都是一个位值,我只显示正确列的值为"0"的行。那么问题来了:有没有像@ColumnName=0这样的东西适用于此?非常感谢。
我从未使用过SQLDataSources,但如果您想走更自定义的路线,您可以根据用户选择使用自定义where
子句构建查询(或使用LINQ
到SQL
或LINQ
到Entity Framework
)。
你更熟悉哪项技术?LINQ
会更好,但我也可以在ADO.NET
中给出答案(SqlConnection, SqlCommand
等)。
因此LINQ将相对简单。在设置了LINQ to Entities(EDMX)或LINQ to SQL(DBML)之后(我会执行EDMX,因为MSFT在前向维护中不再支持L2S)。使用现有的数据库,拖放操作非常简单。
代码如下所示:
using(var context = new LinqDbContext())
{
var results = context.Tablename;
if(limitByConfEmail)
{
results = results.Where(data => data.ConfirmationEmail == true);
}
// do your elses here
gridview.DataSource = results;
gridview.DataBind();
}