0

グリッドビューがあり、不明な列を持つデータ ソースにバインドします。

単純にデータグリッドにバインドすると、すべての作品が見つかり、すべてがバインドされます。

しかし、値に基づいて列を処理する方法が見つかりません。

私は次のようにできることがわかりました:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    for (int i = 0; i < e.Row.Cells.Count; i++)
    {
        DateTime x;
        var res =DateTime.TryParse(e.Row.Cells[i].Text,out x);
        if (res)
        {
            TextBox text = new TextBox();
            text.Text =  e.Row.Cells[i].Text;
            e.Row.Cells[i].Controls.Clear();
            e.Row.Cells[i].Controls.Add(text);
        }
    }
}

しかし、それは非常に醜いです

DateTime から Textbox へのコンバーターを作成し、データグリッドにそれをデータバインディングに使用するように指示する方法はありますか?

後でコントロールをテキストボックスから日付ピッカーに変更する予定です。これはテストモードのみです..

4

1 に答える 1

0

非常に基本的なデータ バインディング シナリオ以外では、 をオフにし、多くの (またはほとんどの) 列に対して要素をAutoGenerateColumns設定し、イベントを使用する必要があることがわかります。TemplateFieldRowDataBound

パターンが見苦しくなって申し訳ありませんが、自動生成はそれを行うだけで、それ以上は行いません。グリッドが列の作成と値の配線を処理している場合、値を制御することはできません。

于 2012-12-23T15:21:18.207 に答える