在asp:ListView中使用EmptyDataTemplate插入记录

时间:2009-03-31 00:51:22

标签: asp.net listview asp.net-3.5 linqdatasource

我的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

3 个答案:

答案 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

您仍需要进行错误检查和数据绑定()并刷新列表视图。

这是最好的方法吗?也许不是......但这是有可能的。

〜伊恩