我的asp:ListView中有一个EmptyDataTemplate,我想用它来插入新记录。
我在InsertItemTemplate中插入工作...我想我可以将InsertItemTemplate复制到EmptyDataTemplate中,单击Insert会出现错误
Insert can only be called on an insert item. Ensure only the InsertTemplate has a button with CommandName=Insert.
如何使用EmptyDataTemplate插入行?我是否需要使用按钮的OnClick来访问EmptyDataTemplate中的值并自己进行插入?
我正在使用LinqDataSource
答案 0 :(得分:2)
你可能现在已经想到了 但如果将InsertItemPosition设置为None以外的任何值,则不会呈现EmptyData Template,即它将始终显示插入模板
你可以在这里阅读更多内容 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.emptydatatemplate.aspx
答案 1 :(得分:1)
如果想在空数据模板中插入数据,则无法使用。
答案 2 :(得分:0)
可以通过手工处理插件从EmptyDataTemplate执行插入操作。我使用listview根据唯一的过滤项显示静态行数。我基本上列出了一个对象的所有静态属性。在过滤了没有与之关联的任何属性的新对象的情况下,我使用listview的EmptyDataTemplate来显示包含用于捕获数据的asp.net控件的HTMLTable。我在表中有一个命令按钮,我使用ListView_ItemCommand进行评估。如果CommandName与EmptyDataItem中的“Insert”按钮匹配,我使用ListView.Controls(0).FindControl方法来定位我的表。然后我遍历我的表并对每行中找到的数据进行插入。我包括了如何在htmltable中找到一个控件。在我的代码中,我实际上抓住了一堆控件然后制作sql并使用SQLConnection来执行插入。
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
您仍需要进行错误检查和数据绑定()并刷新列表视图。
这是最好的方法吗?也许不是......但这是有可能的。
〜伊恩