Wrox Home  
Search P2P Archive for: Go

  Return to Index  

aspx_professional thread: Nesting a repeater in a datalist


Message #1 by "Neil Newton" <neil_n@h...> on Fri, 7 Feb 2003 22:51:47
Hi,

   I have learned to love datalists but have, of course, messed myself up 
by trying something tricky (at least for me). I put a repeater in the 
selecteditem template:
   (data list declared above)
	<SelectedItemTemplate>
           <asp:Repeater ID="drWageHist" Runat=server>
                <ItemTemplate>
                  <tr>
                     <td align="left"><%#  databinder.eval
(container, "DataItem.entereddate")%></td>
                  </tr>
                           
                </ItemTemplate>
            </asp:Repeater>
    	</SelectedItemTemplate>

  I want to click on the itemtemplate of the data list and have the 
repeater come up with its rows. I am trying to bind a differnt data reader 
to the repeater than the one that filled datalist. I saw some pages on the 
web that described this process. Here's the code I'm using:

 Public Sub ListCreated(ByVal sender As Object, _
               ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) 
_
               Handles dlTermList.ItemDataBound

        Dim lrepeater As Repeater = New Repeater()
        Dim squery As String
        Dim cADO As New clsADO()

        Dim MyConn As New System.Data.OleDb.OleDbConnection
(SQLConnectString)
        MyConn.Open()

        squery = "Select EnteredDate from wagehist where ssn='999999999'"  
        Dim MyCmd As New System.Data.OleDb.OleDbCommand(squery, MyConn)
        Dim MyDataRdr As System.Data.OleDb.OleDbDataReader = 
cADO.createCommand(squery).executereader()

        'Make appropriate buttons visable based on 'type' of user
        'Above store managers will only disapprove wage changes.
        'Payroll administrators will process those records which were not
        'disapproved in TOPPS.
        If e.Item.ItemType = ListItemType.Item Then
            lrepeater = CType(e.Item.FindControl("drWageHist"), Repeater)
            lrepeater.DataSource = MyDataRdr
            lrepeater.DataBind()
        End If
    End Sub

   I tried running this code from the OnItemDataBound event and the 
onItemCreated event. In both cases the FindControl method returns nothing 
and I get the error: Object reference not set to an instance of an object. 
This error comes up when I try to set the datasource.

  What am I doing wrong?

Neil

  Return to Index