Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2004, 17:50
Avatar de martinArgentino
martinArgentino
 
Fecha de Ingreso: diciembre-2002
Mensajes: 157
Antigüedad: 21 años, 5 meses
Puntos: 1
DataGrid dentro de un Datalist

Bueno la pregunta es si es posible tener un DataGri dentro de un Datalist.

Vi un ejemplo en C que lo hacia, pero con VB no me permite acceder al DataGrid que esta dentro del DaltaList


Este es el codigo HTML



<asp:datalist id="dlDuplicatesP" runat="server" width="650" cellspacing="0" cellpadding="0">
<ItemTemplate>
<TABLE class="blueborder" id="Table5" cellSpacing="0" cellPadding="0" width="650" border="0">
<TR>
<TD class="bluetitle" align="middle" colSpan="6">Company</TD>
</TR>
<TR vAlign="top" align="middle">
<TD>
<asp:Label id=CompanyId1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CompanyId1") %>'>
</asp:Label></TD>
<TD colSpan="6">
<asp:Label id=CompanyName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CompanyName") %>'>
</asp:Label></TD>
</TR>
<TR>
<TD class="bluetitle" align="middle" colSpan="7">This is an Excel file Person</TD>
</TR>
<TR vAlign="top">
<TD>ID:<BR>
-</TD>
<TD>Last Name:<BR>
<asp:Label id=NewLastName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.NewLastName") %>'>
</asp:Label></TD>
<TD>First Name:<BR>
<asp:Label id=NewFirstName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.NewFirstName") %>'>
</asp:Label></TD>
<TD>Title:<BR>
<asp:Label id=NewTitle runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.NewTitle") %>'>
</asp:Label></TD>
<TD>Work Phone:<BR>
<asp:Label id=NewPhoneWork runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.NewPhoneWork") %>'>
</asp:Label></TD>
<TD>Work Email:<BR>
<asp:Label id=NewWorkEmail runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.NewWorkEmail") %>'>
</asp:Label></TD>
<TD align="middle">
<asp:CheckBox id="check1" runat="server"></asp:CheckBox></TD>
</TR>
<TR>
<TD colSpan="7">
<asp:DataGrid id="dgPersonBD" runat="server" AutoGenerateColumns="False" DataKeyField="PersonId" ShowHeader="False" GridLines="None">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label runat="server" ID=lblPersonId Text='<%# DataBinder.Eval(Container, "DataItem.PersonId") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID=lblLastName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.LastName") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist>



Bueno, una vez que lleno los campos del Datalist asigno el Dataset Correspondiente y ejecuto el databind o sea

dlDuplicatesC.DataSource = DsCT
dlDuplicatesC.DataBind()


Me voy al evento ItemDataBound que segun entiendo es el que se ejecuta al hacer DataBind.

Este es el codigo

Private Sub dlDuplicatesP_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dlDuplicatesP.ItemDataBound
Dim item As DataListItem
Dim oPerson As New Persons()
Dim lastname As String
Dim firstname As String
Dim dsP As New DataSet()
For Each item In dlDuplicatesP.Items
lastname = CStr(CType(item.FindControl("newLastName"), Label).Text)
firstname = CStr(CType(item.FindControl("newFirstName"), Label).Text)
dsP = oPerson.GetPersonSearch(lastname, firstname)
dgPersonBD.dataSource = dsP
dgPersonBD.databind()
Next
dsP = Nothing
End Sub


Bueno es aqui en donde se clava
dgPersonBD.dataSource = dsP



Me dice

Object reference not set to an instance of an object.


Al Control DataGrid lo tuve que declarar a mano ya que al meter un objeto dentro de otro (ASP:datagrid en ASP:datalist ) no lo creaba. Al compilar no me da ningun error.


Bueno espero haber sido claro y que alguien me pueda ayudar o pasar un ejemplo donde exista un DataGid Dentro de Un Datalist, y si no es mucho pedir en VB ya que tengo uno en C y haciendo lo mismo no puedo lograr que funcione

Saludos
__________________
Martin