Solved

Mobile ObjectList problem loadind array The DataField 'TheTime' does not exist in the source data?

Posted on 2007-11-25
3
524 Views
Last Modified: 2010-04-21
Hi,

This is perplaxing.  I am new to development for mobile application so maybe I am missing something.
I want the players in my hockey league to have mobile cell phone access to the league schedule.  I can do this but when I add an extra field "TheTime", I get the following error:

The DataField 'TheTime' does not exist in the source data.  Specify a different DataField property, or remove the field.

I KNOW this field exists and when I write the code for a regular data reader, no problem.  I am using the same sql stored procedure for both.

Here's my sub.  I've created a class to hold the gameschedule so I can have more than one field in the objectlist.  This works on the web now at www.qiihl.com/mobile/default.aspx but as soon as I try to add TheTime field everything crashes:

Code attached



<%@ Page Language="VB" Inherits="System.Web.UI.MobileControls.MobilePage" %>

<%@ import Namespace="System.Data.SqlClient" %>

<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
 

<script runat="server">

    Private Class GameSchedule
 

        Dim _thedate, _time, _hometeam, _awayteam, _venue As String
 

        Public Sub New(ByVal thedate As String, ByVal thetime As String, ByVal hometeam As String, ByVal awayteam As String, ByVal venue As String)

                      

            _thedate = thedate

            _time = time

            _hometeam = hometeam

            _awayteam = awayteam

            _venue = venue

            
 

        End Sub
 

        Public ReadOnly Property hometeam() As String

            Get

                Return _hometeam

            End Get

        End Property
 

        Public ReadOnly Property awayteam() As String

            Get

                Return _awayteam

            End Get

        End Property

        

        Public ReadOnly Property thedate() As String

            Get

                Return _thedate

            End Get

        End Property

        

        Public ReadOnly Property venue() As String

            Get

                Return _venue

            End Get

        End Property

        

        Public ReadOnly Property time() As String

            Get

                Return _time

            End Get

        End Property
 

   

    End Class
 
 

    Sub Page_Load()
 

        If Not Page.IsPostBack Then
 

            Dim myConnection = New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))

            myConnection.Open()

            Dim myCommand = New SqlCommand("qGetTeamsInfoForGridView", myConnection)

            myCommand.CommandType = Data.CommandType.StoredProcedure

            Dim reader As SqlDataReader = myCommand.ExecuteReader()

            List1.DataSource = reader

            ' Dim teamid As Integer

            ' Dim shortname As String

                 

            If reader.HasRows Then

             

                List1.DataTextField = "ShortName"

                List1.DataValueField = "TeamID"

                List1.DataBind()

       

            

            End If

            

            reader.Close()

            myConnection.Close()

	

        End If
 

    End Sub

    

    Sub GetTeamSchedule(ByVal Src As Object, ByVal Args As ListCommandEventArgs)

        

             

        Dim teamname As String

        Dim teamid As Integer

        teamid = Args.ListItem.Value

        teamname = Args.ListItem.Text

        Dim myConnection = New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))

        myConnection.Open()

        Dim myCommand = New SqlCommand("qGetScheduleWithTeamID", myConnection)

        myCommand.CommandType = Data.CommandType.StoredProcedure

        myCommand.Parameters.Add(New SqlParameter("@teamid", Data.SqlDbType.Int))

        myCommand.Parameters("@teamid").Value = teamid

        Dim reader As SqlDataReader = myCommand.ExecuteReader()

        Dim schedulearray As New ArrayList()

      

        If reader.HasRows Then

            While reader.Read() = True

                schedulearray.Add(New GameSchedule(reader("TheDate"), reader("TheTime"), reader("hometeam"), reader("awayteam"), "C_Center"))

            End While

            Title.Text = "Two Weeks - Schedule: " & teamname

            

            ObjectListSchedule.DataSource = schedulearray

            ObjectListSchedule.DataBind()

        End If

        

        reader.Close()

        myConnection.Close()

        ActiveForm = Form2

    End Sub
 

</script>
 

<html xmlns="http://www.w3.org/1999/xhtml" >

<body>

    <mobile:form id="form1" runat="server">

        <mobile:Label ID="Label1" Runat="server">QIIHL Teams: Schedule</mobile:Label>

        <mobile:Label ID="Label2" Runat="server">Choose Team</mobile:Label>

        <br />

        <mobile:List ID="List1" Runat="server"  OnItemCommand="GetTeamSchedule" >

     

     

        </mobile:List>
 

    </mobile:form>

    <mobile:Form ID="Form2" Runat="server">

    <mobile:Label ID="Title" runat="server" StyleReference="title" Font-Size="Small">Schedule</mobile:Label>

       <mobile:ObjectList

        ID="ObjectListSchedule" 

        Runat="server" 

        AutoGenerateFields="False" 

        TableFields="TheDate;TheTime;HomeTeam;AwayTeam" CommandStyle-StyleReference="subcommand" Font-Size="Small" LabelStyle-StyleReference="title">

           <Field DataField="TheDate" Name="TheDate" Title="Date" />

           <Field DataField="TheTime" Name="TheTime" Title="Time" />

           <Field DataField="HomeTeam" Name="HomeTeam" Title="Home" />

           <Field DataField="AwayTeam" Name="AwayTeam" Title="Away" />

        

        

</mobile:ObjectList> 

        <mobile:Link ID="Link1" Runat="server" NavigateUrl="#form1">Team List</mobile:Link>

</mobile:Form>
 

</body>

</html>

Open in new window

0
Comment
Question by:vstack
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
gocemi earned 500 total points
ID: 20348709
Hi,

Do you fetch "TheTime" - field from the DB?
Do you convert data in String?
start the debug, add breakpoint on line  102 and view "reader" properties in the QuickWatch window

Regards
0
 

Author Comment

by:vstack
ID: 20349198
I fetch it from the DB.  I will try .ToString.  Thanks
0
 

Author Closing Comment

by:vstack
ID: 31410862
Thanks, I've finally worked this out.  Part of the solution was the .ToString on the date
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now