CommandName =在ASP.NET ListView的EditTemplate中插入抛出“只能在插入项目上调用插入”

时间:2015-06-15 09:03:59

标签: c# asp.net listview

我支持网络应用程序。在那里,有两个表 - TaxCode和TaxRate。 TaxCode与TaxRate有1对多的关系。

UI有一个带有LayoutTemplate的ListView,ItemTemplate和EditTemplate来显示TaxCode。当用户在EditTemplate中选择税码时,它会显示一个CutomGridView,允许用户为该特定税码创建或编辑税率。这个CustomGridView有3行,每行有4个模板字段,如下所示。

<asp:TemplateField HeaderStyle-CssClass="highlightTitlebar" HeaderStyle-Width="5%" HeaderStyle-Height="30px">
<HeaderTemplate>
  <custom:CustomImageButton ID="imgAdd" runat="server" ImageUrl="image/add_round.gif" OnClick="imgAddTaxRateDetail_Click" CausesValidation="False"/>
</HeaderTemplate>
<ItemTemplate>
   <custom:CustomImageButton ID="imgEdit" runat="server" ImageUrl="image/edit.gif"  CommandName="Edit" />
</ItemTemplate>          
<EditItemTemplate>
   <asp:ImageButton ID="imgUpdate" runat="server" ImageUrl="image/update.gif" CommandName="Update" />
   <asp:HiddenField runat="server" ID="hfId" Value='<%# Bind("Id") %>' />
</EditItemTemplate>
<FooterTemplate>
   <asp:ImageButton ID="imgInsert" runat="server" ImageUrl="image/insert.gif" CommandName="Insert" OnClick="imgInsert_Click" />
</FooterTemplate>

CustomGridView中的每一行都是模板字段。在图像下面,EffectiveOn部分是CustomGridView,

How the CustomGridView is binded with ListView

当我尝试使用适当的EffectiveOn和Rate保存TaxRate时,它会抛出“只能在插入项上调用Insert。确保只有InsertTemplate有一个CommandName = Insert的按钮。” ListView没有InsertTemplate时出错。但是记录会被插入到数据库中。

如果有任何方法可以解决此问题,请与我们联系?

1 个答案:

答案 0 :(得分:1)

错误是不言自明的 看看这个:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.insertitemtemplate(v=vs.110).aspx

所以你可以做其中任何一件事。

  1. 创建一个InsertItemplate并使用listview的ItemInserted事件插入
  2. 将CommandName更改为CommandName =“InsertData”并在ItemCommand
  3. 上捕获该事件