1

私は持っています、私はこれDataSetで私を拘束しています。私はtrueに設定されています。によって返される列の1つに値があり、その日付部分を取得して、グリッドを。でバインドするだけで済みます。私はこの方法でそれを試みましたが、それはうまくいきませんでした。どんな助けでもありがたいです。GridViewDataSetAutoGenerateColumnsDataSetDateTimeDataSet

  private void FormatDataSet(DataSet ds) 
{ 
    foreach(DataRow dr in ds.Tables[0].Rows.Count) 
       dr["Col5"] = (DateTime.Parse(dr["col5"].ToString())).ToString("d").ToString(); 
 }
4

1 に答える 1

2

これは、AutoGenerateColumns属性を使用する際の制限の1つだと思います。sを使用して列を手動で定義した場合BoundField、属性を使用して形式を制御できDataFormatStringます。

あなたの場合、あなたのアプローチがうまくいかない理由は、データセットの日付型フィールドに文字列を強制しようとしているためです。DataSet定義を変更しない限り、これは不可能です。

これを回避する方法は、GridViewのRowDataBoundイベントに移動し、セルを手動で編集することです。

private void YourGridViewControl_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    DataRowView drv = null;
    if (e.Row.RowType == DataControlRowType.DataRow) {
        drv = (DataRowView)e.Row.DataItem();
        e.Row.Cells[1].Text = (DateTime.Parse(dr("col5").ToString())).ToString("d");
    }
}
于 2012-10-18T18:16:06.640 に答える