OnItemDataBound - fonction datatables bootstrap perdue
Bonsoir...
objectif : charger en behind les colonnes de ma table <table id="datatable1" ..... car je dois afficher des tableaux avec des colonnes différentes en fonction des utilisateurs ( les tableaux n'ont pas le meme nombre de colonne ni les meme intitulés)
j'ai utilisé un repeater ... jusque la tout est o dans affichage recherche filtre issue de la jquery.dataTables...et toute la suite.
j'ai cherché sur internet un moyen de remonter les colonnes dynamiquement ....
j'ai trouvé avec OnItemDataBound ......pas de probleme d'affichage 'est ok
PAR CONTRE : je n'ai plus les actions de recherche , tri , responsive ...
Quelqu'un peut il m'ai de je suis pas un expert ( loin de la)
un morceau aspx ..
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <asp:Repeater ID="rpt" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<%-- OnItemDataBound="Repeater1_ItemDataBound"--%>
<HeaderTemplate>
<table id="datatable1" class="display responsive nowrap" style="width: 100%" >
</HeaderTemplate>
<ItemTemplate>
<tr class="ccie_celluletableau">
<td class="ui-widget-content"><%# Eval("Société").ToString()%></td>
<td class="ui-widget-header ui-corner-all"><%# Eval("Ferme").ToString()%></td>
<td class="ui-widget-header ui-corner-all"><%# Eval("Bâtiment").ToString()%></td> |
mon code behind .. pas très propre
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.Header Then
Dim t As DataTable = New DataTable()
Dim cmd As SqlCommand = New SqlCommand("charge_sitquot_poussin", con)
cmd.Parameters.AddWithValue("@refsociete", "%")
cmd.Parameters.AddWithValue("@refferme", "%")
cmd.Parameters.AddWithValue("@refbatiment", "%")
cmd.CommandType = CommandType.StoredProcedure
Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
t = New DataTable()
da.Fill(t)
Dim l1 As Literal = New Literal() With {
.ID = "l1",
.Text = "<thead><tr class='ccie_entetetableau'>"
}
e.Item.Controls.Add(l1)
For Each column As DataColumn In t.Columns
Dim lbl As Label = New Label() With {
.ID = "lbl" & column.ColumnName,
.Text = "<th>" & column.ColumnName & "</th>"
}
e.Item.Controls.Add(lbl)
Next
Dim l3 As Literal = New Literal() With {
.ID = "l3",
.Text = "</tr><thead></HeaderTemplate>"
}
e.Item.Controls.Add(l3)
End If
End Sub |
merci de votre aide .. ou de vos idées .... ou d'autres solutions...
EMmanuel