C# 通过更改datatable中的可用数据填充datagrid

C# 通过更改datatable中的可用数据填充datagrid,c#,asp.net,datagridview,C#,Asp.net,Datagridview,我试图从一个从数据库检索数据的datatable中填充datagridview 在填充列和行时,我希望数据的格式在datatable的列中可用。我不希望在填充之前更改datatable中的数据,但是我希望在绑定到网格时更改数据。如果可以使用任何网格属性来完成此操作,请帮助我 例如:要使用数据库中可用的数据“是”而不是“Y”填充列。尝试RowDataBound protected void GridViewProducts_RowDataBound(object sender, GridViewR

我试图从一个从数据库检索数据的datatable中填充datagridview

在填充列和行时,我希望数据的格式在datatable的列中可用。我不希望在填充之前更改datatable中的数据,但是我希望在绑定到网格时更改数据。如果可以使用任何网格属性来完成此操作,请帮助我

例如:要使用数据库中可用的数据“是”而不是“Y”填充列。

尝试RowDataBound

protected void GridViewProducts_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row .RowType == DataControlRowType .DataRow )
        {
           e.Row.Cells[2].Text = (e.Row.Cells[2].Text=="Y" ? "YES" : "NO"); 
        }
    }

使用
RowDataBound
事件处理程序:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
        e.Row.Cells[0].Text = (e.Row.Cells[0].Text == "Y" ? "Yes" : "No"); 
}

您可以使用
copy
方法复制原始
DataTable

DataTable copyDataTable = dataTable.Copy();
使用
循环

foreach (DataRow dr in copyDataTable.Rows)
{
    dr["columnName"] = dr["columnName"].ToString().Equals("Y") ? "Yes" : "No";
}
copyDataTable.AsEnumerable().Where(c => c["columnName"].ToString().Equals("Y"))
         .ToList().ForEach(c => c["columnName"] = "Yes");
copyDataTable.AsEnumerable().Where(c => c["columnName"].ToString().Equals("N"))
         .ToList().ForEach(c => c["columnName"] = "No");
使用
Linq

foreach (DataRow dr in copyDataTable.Rows)
{
    dr["columnName"] = dr["columnName"].ToString().Equals("Y") ? "Yes" : "No";
}
copyDataTable.AsEnumerable().Where(c => c["columnName"].ToString().Equals("Y"))
         .ToList().ForEach(c => c["columnName"] = "Yes");
copyDataTable.AsEnumerable().Where(c => c["columnName"].ToString().Equals("N"))
         .ToList().ForEach(c => c["columnName"] = "No");