Ver Mensaje Individual
  #9 (permalink)  
Antiguo 17/09/2009, 11:01
igonfil
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: menu acordeon dinamico alimentado por base de datos

Bueno despues de muchas vueltas he encontrado el siguiente código para crear el menú accordion pero sigue sin mostrarme nada a ver si entre todos podemos ver cual es el error que estoy cometiendo en este código ya que me entra en la excepcion que tengo creada en el page load. Espero que me podais ayudar y poder quitarme este tema de encima y dejaros de molestar con esto muchas gracias

Cita:
La conexión la tengon creada en el web config

Código PHP:
<connectionStrings>
    <
add name="ConnectionString" connectionString="server=192.168.1.245 ; uid=sa; pwd=pass; database=BookDB;"
          
providerName="System.Data.SqlClient"/>
    </
connectionStrings> 

Código PHP:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default3.aspx.vb" Inherits="Default3" %>

<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<
html xmlns="http://www.w3.org/1999/xhtml">
<
head runat="server">
    <
title>Página sin título</title>
    <
style type="text/css"> 
.
accordionCabecera 
{ 
border: 1px solid black; 
background: blue url(img/glossyback.gif) repeat-x bottom left;
font-family: Arial, Sans-Serif; 
font-size: 14px; 
font-weight: bold; 
padding: 4px; 
margin-top: 4px; 
cursor: pointer; 
} 

.
accordionContenido 
{ 
font-family: Sans-Serif; 
background-color: #fff8ab; 
border: 1px solid black; 
border-top: none; 
font-size: 12px; 
padding: 7px; 
} 
</
style> 

</
head>
<
body>
    <
form id="form1" runat="server">
    <
div>
    
        <
asp:ScriptManager ID="ScriptManager1" runat="server">
        </
asp:ScriptManager>
    
    </
div>
    <
ajaxToolkit:Accordion ID="accordionBooks" runat="server" FadeTransitions="True" FramesPerSecond="50" Width="250px" TransitionDuration="200" HeaderCssClass="accordionCabecera" ContentCssClass="accordionContenido">
        <
Panes>
            <
ajaxToolkit:AccordionPane ID="pane1" runat="server">
                <
Header>
                   <
p>
                        <
asp:label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "category_name") %>'/>
                   </
p>           
                </
Header>
                <
Content>
                    <
asp:HiddenField ID="hdnCategoryId" Value='<%# DataBinder.Eval(Container.DataItem, "id") %>' runat="server" />
                       <
div style="height:100px">
                           <
asp:GridView ID="gvBooks" runat="server" DataKeyNames="Id" AutoGenerateColumns="false" Width="100%">
                                <
Columns>
                                    <
asp:BoundField DataField="id" runat="server" />
                            <
asp:TemplateField>
                                <
ItemTemplate>
                                    <
asp:Label ID="lblTitle" Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" />
                                </
ItemTemplate>
                            </
asp:TemplateField>

                            <
asp:TemplateField>
                                <
ItemTemplate>
                                    <
asp:Label ID="lblPublisher" Text='<%# DataBinder.Eval(Container.DataItem, "Publisher") %>' runat="server" />
                                </
ItemTemplate>
                            </
asp:TemplateField>

                            <
asp:TemplateField>
                                <
ItemTemplate>
                                    <
asp:Label ID="lblISBN" Text='<%# DataBinder.Eval(Container.DataItem, "ISBN") %>' runat="server" />
                                </
ItemTemplate>
                            </
asp:TemplateField>

                                </
Columns>
                           </
asp:GridView>
                       </
div>
                </
Content>
            </
ajaxToolkit:AccordionPane>        
        </
Panes>    
    </
ajaxToolkit:Accordion>
    
    
        <
asp:SqlDataSource ID="sds1" runat="server" ConnectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\MisProgramas\MenuAcordeon1\App_Data\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" ProviderName="System.Data.SqlClient" SelectCommand="SELECT notTitulo, notContenido,  codnotCont FROM Noticias1, Noticias2" />
    
    </
form>
</
body>
</
html> 
Código PHP:

Imports System
.Data.Sql
Imports System
.Data.SqlClient
Imports System
.Data
Partial 
Class Default3
    Inherits System
.Web.UI.Page
    
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        
Try
            
accordionBooks.DataSource = GetAllBookCategories().Tables(0).DefaultView
            accordionBooks
.DataBind()
        Catch 
ex As Exception
            Error 
("Error while getting data")
        
End Try
    
End Sub


    
Protected Sub accordionBooks_ItemDataBound(ByVal sender As Object, ByVal e As AjaxControlToolkit.AccordionItemEventArgs) Handles accordionBooks.ItemDataBound
        
Try
            If 
e.ItemType = AjaxControlToolkit.AccordionItemType.Content Then
                Dim gvBooks 
As GridView = CType(e.AccordionItem.FindControl("gvBooks"), GridView)
                
Dim hdnCategoryId As HiddenField = CType(e.AccordionItem.FindControl("hdnCategoryId"), HiddenField)
                
Dim categoryId As Integer
                
If Not Integer.TryParse(hdnCategoryId.Value, categoryId) Then
                    
Throw New Exception("Unable to parse id")
                
End If
                
Me.gvBooks.DataSource = GetAllBooksByCategoryId(categoryId)
            
End If
            
Me.gvBooks.DataBind()
        Catch 
ex As Exception
            Error 
("Error while getting data")
        
End Try
    
End Sub

    
Public Shared Function GetAllBooksByCategoryId(ByVal categoryId As Integer) As DataSet
        Dim ds 
As DataSet = Nothing
        
Try
            
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
                
conn.Open()
                
Using cmd As New SqlCommand("spGetBooksByCategory", conn)
                    
cmd.Parameters.Add("@category_id", SqlDbType.Int).Value = categoryId
                    cmd
.CommandType = CommandType.StoredProcedure
                    Using da 
As New SqlDataAdapter(cmd)
                        
ds = New DataSet()
                        
da.Fill(ds)

                    
End Using

                End Using

            End Using

        
Catch ex As Exception
            
'Dim ex As throw

        End Try
        Return ds

    End Function

    Public Shared Function GetAllBookCategories() As DataSet
        Dim ds As DataSet = Nothing
        Try
            Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
                conn.Open()
                Using cmd As New SqlCommand("spGetBookCategories", conn)
                    cmd.CommandType = CommandType.StoredProcedure
                    Using da As New SqlDataAdapter(cmd)
                        ds = New DataSet()
                        da.Fill(ds)
                        Dim rowCount As Integer = ds.Tables(0).Rows.Count
                    End Using
                End Using
            End Using
        Catch ex As Exception
            '
Dim ex As throw
        
End Try
        Return 
ds
    End 
Function

End Class