Bien, para mostrar utilizo un SqlDataSource y un ListView. En el ListView cojo los datos con "<%#Eval(nombredelacolumna)%>" para imprimirlos. Hasta aquí todo bien:
Cita:
Pero ahora lo que quiero es, para cada una de esas noticias, imprimir los comentarios de esa noticia. Lo que he hecho es meter un ListView y otro SqlDataReader dentro del que ya tengo (esto es lo que sigue al código anterior)<asp:SqlDataSource ID="SqlDSNoticias" runat="server"
ConnectionString="<%$ ConnectionStrings:BDOdisea %>" SelectCommand="SELECT TOP (100) PERCENT dbo.Noticia.noticia_id, dbo.Noticia.titular, CONVERT(varchar(10), dbo.Noticia.fecha, 103) AS SoloFecha, dbo.Noticia.mensaje, { fn CONCAT(dbo.Cliente.nombre + ' ', dbo.Cliente.apellido) } AS Nombre, dbo.Noticia.cliente_id, dbo.Cliente.usuario FROM dbo.Noticia INNER JOIN dbo.Cliente ON dbo.Noticia.cliente_id = dbo.Cliente.cliente_id ORDER BY SoloFecha DESC" >
</asp:SqlDataSource>
<asp:ListView ID="LVNoticias" runat="server" DataSourceID="SqlDSNoticias" >
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" style="border:1px solid;">
</div>
</LayoutTemplate>
<ItemTemplate>
//Aqui muestro los datos de la noticia. Quito el codigo porque es un engorro
ConnectionString="<%$ ConnectionStrings:BDOdisea %>" SelectCommand="SELECT TOP (100) PERCENT dbo.Noticia.noticia_id, dbo.Noticia.titular, CONVERT(varchar(10), dbo.Noticia.fecha, 103) AS SoloFecha, dbo.Noticia.mensaje, { fn CONCAT(dbo.Cliente.nombre + ' ', dbo.Cliente.apellido) } AS Nombre, dbo.Noticia.cliente_id, dbo.Cliente.usuario FROM dbo.Noticia INNER JOIN dbo.Cliente ON dbo.Noticia.cliente_id = dbo.Cliente.cliente_id ORDER BY SoloFecha DESC" >
</asp:SqlDataSource>
<asp:ListView ID="LVNoticias" runat="server" DataSourceID="SqlDSNoticias" >
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" style="border:1px solid;">
</div>
</LayoutTemplate>
<ItemTemplate>
//Aqui muestro los datos de la noticia. Quito el codigo porque es un engorro
Cita:
Mi problema es, que para cada fila del ListView, necesito cambiar el SelectCommand del SqldataSource para ponerle la noticia_id de la noticia. He intentado a ponerle (al final de la select) lo que pone ahí, pero me falla justo en esa parte, como si no me dejara insertar código en la select://NUEVO SQLDATASOURCE PARA LOS COMENTARIOS
<asp:SqlDataSource ID="SqlDSComentariosNoticia" ConnectionString="<%$ ConnectionStrings:BDOdisea %>" runat="server" SelectCommand="SELECT ComentariosNoticia.comentario_id, ComentariosNoticia.cliente_id, ComentariosNoticia.noticia_id, ComentariosNoticia.texto, Cliente.usuario FROM ComentariosNoticia INNER JOIN Cliente ON ComentariosNoticia.cliente_id = Cliente.cliente_id INNER JOIN Noticia ON ComentariosNoticia.noticia_id = Noticia.noticia_id WHERE ComentariosNoticia.noticia_id=<%# Eval("noticia_id")%>">
</asp:SqlDataSource>
<div class="comentarios">
//NUEVO LISTVIEW
<asp:ListView ID="LVComentariosNoticias" runat="server" DataSourceID="SqlDSComentariosNoticia" >
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" style="border:1px solid;">
</div>
</LayoutTemplate>
<ItemTemplate>
<p class="usuarioNoticia">enviada por </p>
<asp:Label ID="Label1" runat="server" CssClass="usuarioNoticia"
Text='<%#Eval("usuario") %>' />
<br />
<asp:TextBox ID="TBMensaje" runat="server" Height="30px" TextMode="MultiLine"
Width="292px" CssClass="nuevaNoticia" Text='<%#Eval("texto") %>' Enabled="false"></asp:TextBox>
</ItemTemplate>
</asp:ListView>
</div>
<br />
<br />
<br />
</ItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDSComentariosNoticia" ConnectionString="<%$ ConnectionStrings:BDOdisea %>" runat="server" SelectCommand="SELECT ComentariosNoticia.comentario_id, ComentariosNoticia.cliente_id, ComentariosNoticia.noticia_id, ComentariosNoticia.texto, Cliente.usuario FROM ComentariosNoticia INNER JOIN Cliente ON ComentariosNoticia.cliente_id = Cliente.cliente_id INNER JOIN Noticia ON ComentariosNoticia.noticia_id = Noticia.noticia_id WHERE ComentariosNoticia.noticia_id=<%# Eval("noticia_id")%>">
</asp:SqlDataSource>
<div class="comentarios">
//NUEVO LISTVIEW
<asp:ListView ID="LVComentariosNoticias" runat="server" DataSourceID="SqlDSComentariosNoticia" >
<LayoutTemplate>
<div runat="server" id="itemPlaceholder" style="border:1px solid;">
</div>
</LayoutTemplate>
<ItemTemplate>
<p class="usuarioNoticia">enviada por </p>
<asp:Label ID="Label1" runat="server" CssClass="usuarioNoticia"
Text='<%#Eval("usuario") %>' />
<br />
<asp:TextBox ID="TBMensaje" runat="server" Height="30px" TextMode="MultiLine"
Width="292px" CssClass="nuevaNoticia" Text='<%#Eval("texto") %>' Enabled="false"></asp:TextBox>
</ItemTemplate>
</asp:ListView>
</div>
<br />
<br />
<br />
</ItemTemplate>
</asp:ListView>
Cita:
¿Alguna idea para solucionar eso? en ese <%# Eval("noticia_id")%> tengo que poner la ID de la noticia que estoy mostrando, pero peta justo en esa parteWHERE ComentariosNoticia.noticia_id=<%# Eval("noticia_id")%>
Gracias, un saludo!