所以这是我的情况。我公司买了一个在云端运行的产品。该计划很棒,但缺乏报告功能。因此,我们向包中购买了一个附加模块,允许我们对数据进行只读访问。我打算用它来创建一些报告。是的,我可以使用水晶报告或其他报告生成器之类的东西来做到这一点,但我选择使用我的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语句中使用了各种不同的访问方法,从仅提供字段名称到提供完整的表/字段名称。我也尝试一次删除它们,看看它们中是否有任何一个可以自行工作,但它们都会产生相同的“畸形标记”事件。
如果您需要任何其他详细信息,请与我们联系。感谢。
答案 0 :(得分:1)
您是否尝试使用Text属性单引号?在“issueid”周围加双引号然后在Text周围加双引号将不起作用。这就是您收到server tag is not well formed
错误的原因。
Text='<%# Eval("issueid") %>'