2

データベースからデータを取得したデータテーブルからデータグリッドビューを作成しようとしています。

列と行にデータを入力している間、データをデータテーブルの列で使用できるようにフォーマットしたいと思います。データを入力する前にデータテーブルでデータを変更したくないのですが、グリッドにバインドしている間にデータを変更したいです。これがグリッド プロパティを使用して実行できる場合は、私を助けてください。

例:データベースで利用可能な「Y」の代わりに「YES」のデータを列に入力したい。

4

2 に答える 2

0

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"); 
        }
    }
于 2012-11-05T07:24:43.760 に答える
0

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"); 
}

また

次の方法でオリジナルDataTableをコピーできます。Copy

DataTable copyDataTable = dataTable.Copy();

使用Loops:

foreach (DataRow dr in copyDataTable.Rows)
{
    dr["columnName"] = dr["columnName"].ToString().Equals("Y") ? "Yes" : "No";
}

使用Linq:

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");
于 2012-11-05T07:34:25.783 に答える