我正在使用C#中的gridview,我想知道是否有一种有效的方法来使用一个数据源而不是三个。现在我有一个if语句,根据下拉列表中的值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有什么可以用于此吗? 谢谢。
答案 0 :(得分:1)
我从未使用过SQLDataSources,但是如果你想使用更自定义的路线,你可以构建你的查询(或使用 LINQ
到SQL
或< strong> LINQ
到Entity Framework
),根据用户选择使用自定义where
子句。
您更熟悉哪种技术? 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();
}