C#如何为gridview的所有行显示datetimepicker控件

时间:2010-03-09 09:20:04

标签: c# .net winforms datagridview datetimepicker

在我的应用程序中,我动态创建行和列。我创建了一个System.DateTime类型的列。在此之后,我想为该列中的所有行显示datetimepicker控件。

我用

创建了一个专栏
dataTable.Columns.Add("CreatedOn", Type.GetType("System.DateTime"));

我正在添加行

foreach(String filename ......)
 dataTable_FileProperty.Rows.Add(filename,//here i want to add dateTimePicker

那么,对此有什么解决方案。

编辑:请提供一些代码段。我是C#.net的新手。
感谢。

3 个答案:

答案 0 :(得分:2)

默认情况下,您可以使用以下列:

DataGridViewTextBoxColumn,DataGridViewCheckBoxColumn,DataGridViewImageColumn,DataGridViewButtonColumn,DataGridViewComboBoxColumn,DataGridViewLinkColumn

如果要显示datetimepicker控件,则必须实现自定义列。

检查出来:http://msdn.microsoft.com/en-us/library/7fb61s43.aspx

希望这有帮助。

答案 1 :(得分:1)

使用gridview的项目模板并在其中放置datetimepicker。一个很好的例子是here

要实现它,您必须实现ITemplate接口。

另一个例子是this

this msdn article中给出了一个简单的实现方法。但是代码是在VB.net中。

答案 2 :(得分:0)

DataTable.Rows包含数据,即文件名,日期,一些字符串。

GridView.Columns包含显示数据的控件。

因此,如果您使用的是DataRowCollection.Add(Object[])

DataTable DataTable1 = new DataTable();
DataTable1.Columns.AddRange(
     new DataColumn[] {
          new DataColumn("file", typeof(string)),
          new DataColumn("date", typeof(DateTime)) });

foreach (string f in System.IO.Directory.GetFiles(@"c:\windows"))
    DataTable1.Rows.Add(f, System.IO.File.GetCreationTime(f));

GridView1.DataSource = DataTable1;
GridView1.DataBind();

GridView的标记:

<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField HeaderText="File" DataField="file" />
        <asp:TemplateField HeaderText="Date">
            <ItemTemplate>
                <asp:Calendar runat="server" ID="Calendar1" SelectedDate='<%# Bind("date") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

此外,您还需要详细了解Calendar.SelectedDateCalendar.VisibleDate