mysql - asp.net从mysql填充gridview的问题

标签 mysql asp.net vb.net

这就是我的情况。我的公司购买了一款在云中运行的产品。该程序很棒,但缺乏报告功能。因此,我们购买了一个附加模块,该模块允许我们对数据进行只读访问。我计划用它来创建一些报告。是的,我可以使用 Crystal 报告或其他报告生成器之类的东西来执行此操作,但我选择使用我的 asp.net 代码。我喜欢它,我熟悉它,对于这家公司来说,它是最具成本效益的,并且最容易根据我的背景更新解决方案。

所以我使用 gridview 来查看一些数据。我没有使用“asp:sqldatasource”来查找数据,而是选择使用后面的代码。将所有数据从后面的代码绑定(bind)到 gridview 后,我使用“列”和“asp:templatefields”来创建布局。在每一数据行中,我使用 Eval() 方法来填充信息。

问题就在这里。 Eval 方法似乎无法识别其数据源中的内容。我的 asp:labels 抛出错误消息“服务器标记格式不正确”。我在这里缺少什么。

这是ASP代码:

<asp:GridView ID="OwnerWOS" Width="" Height=""
                BorderColor="White" EmptyDataText="" EnableViewState="false" GridLines="None" 
                OnLoad="OwnerWOS_Load" OnDataBinding="OwnerWOS_DataBinding" runat="server">
    <Columns>
        <asp:Templatefield HeaderText="Service Issue">
            <ItemTemplate>
                <asp:label ID="lblIssue" runat="server" Text="<%# Eval("issueid") %>"></asp:label>
            </ItemTemplate>
        </asp:Templatefield>
        <asp:Templatefield HeaderText="Employee">
            <ItemTemplate>
                <asp:label ID="lblEmployee" runat="server" Text="<%# Eval("EMPLOYEE") %>"></asp:label>
            </ItemTemplate>
        </asp:Templatefield>
        <asp:Templatefield HeaderText="Address">
            <ItemTemplate>
                <asp:label ID="lblAddress" runat="server" Text="<%# Eval("name") %>"></asp:label>
            </ItemTemplate>
        </asp:Templatefield>
        <asp:Templatefield HeaderText="Description">
            <ItemTemplate>
                <asp:label ID="lblDesc" runat="server" Text="<%# Eval("street1") %>"></asp:label>
            </ItemTemplate>
        </asp:Templatefield>
        <asp:Templatefield HeaderText="Work Date">
            <ItemTemplate>
                <asp:label ID="lblWorkDate" runat="server" Text="<%# Eval("duedate") %>"></asp:label>
            </ItemTemplate>
        </asp:Templatefield>
        <asp:Templatefield HeaderText="Time (h)">
            <ItemTemplate>
                <asp:label ID="lblTime" runat="server" Text="<%# Eval("owners.name") %>"></asp:label>
            </ItemTemplate>
        </asp:Templatefield>
        <asp:Templatefield HeaderText="Billed">
            <ItemTemplate>
                <asp:Label ID="lblBilled" runat="server" Text="<%# Eval("") %>"  />
            </ItemTemplate>
        </asp:Templatefield>
    </Columns>
    <HeaderStyle />
    <FooterStyle />
    <RowStyle />
    <SelectedRowStyle />
    <AlternatingRowStyle />
    <EditRowStyle />
</asp:GridView>

以及背后的代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then
        'Get the first day and last day of this month to pre-populate the date fields
        Dim FirstOfMonth As String = Today.Month.ToString & "/1/" & Today.Year.ToString
        Dim LastOfMonth As String = Today.AddMonths(1).ToString & "/" & Today.AddDays(-1).ToString & "/" & Today.Year.ToString


        Dim da As New OdbcDataAdapter("SELECT DISTINCT issues.issueid, users.firstname & ' ' & users.lastname AS EMPLOYEE, property.name, " & _
                                                "property.street1, units.street1, issues.description, issuecategory.name, issues.duedate, issues.hours, owners.name " & _
                                "FROM ((((((issues RIGHT JOIN (issueproplinks RIGHT JOIN property ON issueproplinks.propid = property.propid) ON issues.issueid = issueproplinks.issueid) " & _
                                                "LEFT JOIN issuecategory ON issues.categoryid = issuecategory.categoryid) " & _
                                                "LEFT JOIN issuestatus ON issues.statusid = issuestatus.statusid) " & _
                                                "LEFT JOIN users ON issues.assignid = users.userid) " &
                                                "RIGHT JOIN ownerships ON property.propid = ownerships.propid) " & _
                                                "RIGHT JOIN owners ON ownerships.ownerid = owners.ownerid) " & _
                                                "LEFT JOIN (issueunitlinks LEFT JOIN units ON issueunitlinks.unitid = units.unitid) ON issues.issueid = issueunitlinks.issueid " & _
                                "WHERE (((issues.duedate) Between '2/1/2014' And '2/28/2014') AND ((owners.name)='LK Investment Group LLC'))" & _
                                "ORDER BY issuecategory.name, issues.duedate;", ConfigurationManager.ConnectionStrings("OA").ConnectionString)
        Dim ds As New DataSet()
        da.Fill(ds)

        OwnerWOS.DataSource = ds
        OwnerWOS.DataBind()
    End If


End Sub

是的,对于较小的输出来说,SQL 语句有点长。但这正是我需要利用这家公司给予我的访问权限来做的事情。另外,SQL 语句已经过测试,确实返回了我在其他程序中期望的结果。

因此,在顶部的 asp 代码中,我在 Eval 语句中使用了各种不同的访问方法,从仅提供字段名称,到提供完整的表/字段名称。我还尝试一次删除它们,看看它们中的任何一个是否可以单独工作,但它们都会产生相同的“格式错误的标签”事件。

如果您需要任何其他详细信息,请告诉我。谢谢。

最佳答案

您是否尝试在 Text 属性周围使用单引号? “issueid”周围的双引号和文本周围的双引号将不起作用。这就是您收到服务器标记格式不正确错误的原因。

Text='<%# Eval("issueid") %>'

关于mysql - asp.net从mysql填充gridview的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209773/

相关文章:

VB.NET - 如何创建信息框

.net - 将多个接口(interface)分配给变量类型

php - 在不访问 php.ini 的情况下安装 pdo_mysql 扩展和 GD 库

逗号分隔名称的 MySQL 搜索查询

ruby 中的 Mysql 连接查询有两个条件

c# - 为什么会出现 "Could not create an instance of type Microsoft.AspNetCore.Http.IFormFile"错误?

javascript - 在选择框中选择加载选项

asp.net - 从父 ASP.NET 页面处理用户控件中 LinkBut​​ton 的单击事件

asp.net - SignalR 端口要求

vb.net - 调试后期绑定(bind)操作无法在 Visual Studio 中转换为表达式树