データベースからデータを取得したデータテーブルからデータグリッドビューを作成しようとしています。
列と行にデータを入力している間、データをデータテーブルの列で使用できるようにフォーマットしたいと思います。データを入力する前にデータテーブルでデータを変更したくないのですが、グリッドにバインドしている間にデータを変更したいです。これがグリッド プロパティを使用して実行できる場合は、私を助けてください。
例:データベースで利用可能な「Y」の代わりに「YES」のデータを列に入力したい。
データベースからデータを取得したデータテーブルからデータグリッドビューを作成しようとしています。
列と行にデータを入力している間、データをデータテーブルの列で使用できるようにフォーマットしたいと思います。データを入力する前にデータテーブルでデータを変更したくないのですが、グリッドにバインドしている間にデータを変更したいです。これがグリッド プロパティを使用して実行できる場合は、私を助けてください。
例:データベースで利用可能な「Y」の代わりに「YES」のデータを列に入力したい。
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");
}
また
次の方法でオリジナル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");