0

我正在使用 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 这样的东西?谢谢你。

4

1 回答 1

1

我从未使用过 SQLDataSources,但如果您想采用更自定义的路线,您可以根据用户选择使用自定义子句构建您的查询(或使用LINQtoSQLLINQto )。Entity Frameworkwhere

你更熟悉哪种技术? LINQ会更好,但我也可以给出答案ADO.NETSqlConnection, 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();
}
于 2013-06-27T17:06:50.800 回答