asp.net问题从mysql填充gridview

时间:2014-03-05 21:31:40

标签: mysql asp.net vb.net

所以这是我的情况。我公司买了一个在云端运行的产品。该计划很棒,但缺乏报告功能。因此,我们向包中购买了一个附加模块,允许我们对数据进行只读访问。我打算用它来创建一些报告。是的,我可以使用水晶报告或其他报告生成器之类的东西来做到这一点,但我选择使用我的asp.net代码。我喜欢它,我熟悉它,对于这家公司来说,它是最具成本效益的,也是最简单的以我的背景更新解决方案。

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

这是问题所在。 Eval方法似乎没有从它的数据源中识别出事物。我的asp:标签抛出了错误消息“服务器标签格式不正确”。我在这里错过了什么。

这是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语句中使用了各种不同的访问方法,从仅提供字段名称到提供完整的表/字段名称。我也尝试一次删除它们,看看它们中是否有任何一个可以自行工作,但它们都会产生相同的“畸形标记”事件。

如果您需要任何其他详细信息,请与我们联系。感谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试使用Text属性单引号?在“issueid”周围加双引号然后在Text周围加双引号将不起作用。这就是您收到server tag is not well formed错误的原因。

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