Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 数据集中的DataFormatString(按代码)_Asp.net_Visual Studio_Ms Access - Fatal编程技术网

Asp.net 数据集中的DataFormatString(按代码)

Asp.net 数据集中的DataFormatString(按代码),asp.net,visual-studio,ms-access,Asp.net,Visual Studio,Ms Access,我从access数据库中选择了一组数据,其中一个字段是DateTime字段 我正在尝试在GridView中显示格式化的文件,但尝试时: dtlJob.DataSource = genericDataSet dtlJob.Fields(2).DataFormatString = "{0:d}" dtlJob.DataBind() 我在第2行发现这个错误 Error 2 'DataFormatString' is not a member of 'System.Web.UI.WebCont

我从access数据库中选择了一组数据,其中一个字段是DateTime字段

我正在尝试在GridView中显示格式化的文件,但尝试时:

dtlJob.DataSource = genericDataSet
dtlJob.Fields(2).DataFormatString = "{0:d}"
dtlJob.DataBind()
我在第2行发现这个错误

Error   2   'DataFormatString' is not a member of 'System.Web.UI.WebControls.DataControlField'.
如何格式化数据

编辑 这是我的详细资料我想炫耀一下

<asp:DetailsView ID="dtlJob" runat="server" Height="50px" Width="125px">

</asp:DetailsView>

它只有它的标签,因为我从数据库中通过代码获取每个数据。但是我想格式化
数据
日期字段,该字段的显示方式如下:不再显示它有哪些数据

您必须创建如下代码所示的边界字段

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="false" Height="50px" Width="125px">
<Fields>
    <asp:BoundField DataField="Name" HeaderText="Name" />
    <asp:BoundField DataField="Age"  HeaderText="Age" />
    <asp:BoundField DataField="Birth"  HeaderText="Birth" DataFormatString="{0:d}" />
 </Fields>
 </asp:DetailsView>

我希望这有帮助


Vicente

字段属性是只读的,因此您只能在构造函数中修改它。 请注意,我还没有测试这个解决方案,这是我认为你必须做的

因此,您必须创建一个新类,该类继承自details view,并使用其自己的private\u Fields字段对Fields属性进行阴影处理:

Imports System.Web.UI.WebControls
Public Class CustomDetailsView
    Inherits DetailsView

    Private _fields As System.Web.UI.WebControls.DataControlFieldCollection
    Public Shadows Property Fields As System.Web.UI.WebControls.DataControlFieldCollection
        Get
            Return _fields
        End Get
        Set(ByVal value As System.Web.UI.WebControls.DataControlFieldCollection)
            _fields = value
        End Set
    End Property
End Class
然后您就有了下面的代码,创建CustomDetailsView对象,告诉它它的数据源是dataset,格式化第二列字段,并在绑定数据之前将所有这些信息提供给web表单上的DetaiView

    Dim myDetailsView = New CustomDetailsView
    myDetailsView.DataSource = genericDataSet
    CType(myDetailsView.Fields(1), BoundField).DataFormatString = "{0:d}"
    dtlJob = myDetailsView
    dtlJob.DataBind()
BoundField的基本类型是DataControlField,因此您可以编写CType行。 我现在无法测试,请测试并发布反馈。如果它不起作用,它可能是答案的开始


问候语

这里是另一个解决方案(尚未测试)。在这里,您仍然创建一个继承DetailsView的新类,并访问构造函数中的fields变量:

Imports Microsoft.VisualBasic
Imports System.Collections.Generic

Public Class _CustomDetailsView
    Inherits DetailsView
    Public Sub New(ByVal Columns As List(Of String))

        For Each item As String In Columns
            Dim bfield As New BoundField
            If Not String.IsNullOrWhiteSpace(item) Then
                bfield.DataFormatString = item
            Else
                bfield.DataFormatString = ""
            End If
            Me.Fields.Add(bfield)
        Next
    End Sub
End Class
然后,创建一个字符串列表,其中包含每个列所需的格式。然后通过在构造函数中传递此字符串列表来创建_CustomDetailsView。 接下来,将DtlJob分配给_CustomDetailsView对象,最后提供数据源并继续数据绑定:

    Dim DataFieldStyles = New List(Of String)
    ' First column: Default style
    ' Second column: Date format
    ' Third : Currency Format
    ' Fourth : Default style
    DataFieldStyles.AddRange(New String() {"", "{0:d}", "{0:c}", ""})

    Dim My_DetailsView As _CustomDetailsView = New _CustomDetailsView(DataFieldStyles)
    dtlJob = My_DetailsView
    dtlJob.DataSource = genericDataSet
    dtlJob.DataBind()
和我的另一个答案一样,我不能测试这个,所以试试看,请给出反馈


您好

您可以从ASPX文件发布您的GridView定义吗?当然可以。。它只有它的标签,因为我从数据库中通过代码获取每个数据我这样做了,但字段重复每当数据字段值与数据集中的字段名匹配时,应该设置它的格式吗?