Il est possible de créer une insertion à partir de EmptyDataTemplate en fabriquant à la main l'insertion. J'utilise un listview pour afficher un nombre statique de lignes basé sur un élément filtré unique. Je liste essentiellement tous les attributs statiques d'un objet. Dans le cas où un nouvel objet est filtré sans attributs associés, j'utilise EmptyDataTemplate de la liste pour afficher un HTMLTable contenant des contrôles asp.net pour capturer des données. J'ai un bouton de commande dans la table que j'évalue en utilisant le ListView_ItemCommand. Si le CommandName correspond à celui du bouton "Insérer" dans le EmptyDataItem, j'utilise la méthode ListView.Controls (0) .FindControl pour localiser ma table. Je fais alors une boucle dans ma table et fais des insertions sur les données trouvées dans chaque rangée. J'ai inclus la façon de trouver un contrôle dans le htmltable. Dans mon code, je suis en train de saisir un tas de contrôles, puis de créer le sql et d'utiliser un SQLConnection pour effectuer l'insertion.
Protected Sub ListView_ItemCommand(sender As Object, e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles ListView.ItemCommand
Select Case e.CommandName
Case "Submit"
Dim edt As HtmlTable = ListView.Controls(0).FindControl("myhtmltable")
Dim ddl As DropDownList = CType(edt.FindControl("mydropdownlist"), DropDownList)
'Perform Insert
Case "Some other commandname"
End Select
End Sub
Vous devrez toujours vérifier les erreurs et databind() et actualiser votre listview.
Est-ce le meilleur moyen. Peut-être pas ... Mais c'est possible.
~ Ian
Ceci a résolu mon problème: Comment puis-je insérer des éléments dans mon listview si je viens juste de commencer et mon jeu de données est vide? - utilisez InsertItemPosition = "LastItem". – russds