2009-03-31 5 views
0

J'ai un EmptyDataTemplate dans mon asp: ListView que je veux utiliser pour insérer un nouvel enregistrement.Insérer un enregistrement avec EmptyDataTemplate dans asp: ListView

J'ai dans le travail Insertion InsertItemTemplate ... Je pensais que je pouvais copier le InsertItemTemplate dans le EmptyDataTemplate, en cliquant sur Insérer ce qui donne l'erreur

Insert can only be called on an insert item. Ensure only the InsertTemplate has a button with CommandName=Insert. 

Comment puis-je utiliser la EmptyDataTemplate pour insérer une ligne? Ai-je besoin d'utiliser le OnClick du bouton pour accéder aux valeurs dans EmptyDataTemplate et faire un Insert par moi-même?

J'utilise LinqDataSource

Répondre

1

Aucun moyen si vous voulez insérer des données dans modèle de données vide.

2

Vous pourriez avoir deviné maintenant mais si vous définissez le InsertItemPosition autre chose que Aucun le modèle EmptyData ne sera pas rendu dire qu'il montrera toujours le modèle d'insertion

vous pouvez en lire plus ici http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.emptydatatemplate.aspx

+0

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

0

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

Questions connexes