2012-10-05 63 views
0

我有一個ListView裏面的與「添加記錄」按鈕。當我點擊「添加記錄」按鈕時,InsertItemTemplate沒有出現。奇怪的是,如果我第二次點擊該按鈕,它確實會出現。我已經嘗試了一些東西,比如將CommandName="InitInsert"CommandName="Insert"添加到按鈕,將ListViewAccordion中取出,取出ListView中的「插入」按鈕,然後從Accordion中除去,全都無濟於事。有什麼明顯的我失蹤了?我究竟做錯了什麼?ListView將不會顯示InsertItemTemplate

<asp:ListView runat="server" ID="List1" 
    OnItemDataBound="List1_ItemDataBound" 
    OnItemCommand="List1_ItemCommand" 
    OnItemEditing="List1_ItemEditing" 
    OnItemUpdating="List1_ItemUpdating" 
    OnItemCanceling="List1_ItemCancelling" 
    OnItemDeleting="List1_ItemDeleting" 
    OnItemInserting="List1_ItemInserting" 
    OnSorting="List1_Sorting"> 
<LayoutTemplate> 
    <table border="0" cellpadding="1" cellspacing="0"> 
    <thead> 
    <tr> 
     <th><asp:LinkButton runat="server" ID="BtnCmpnyId" CommandName="Sort" CommandArgument="CmpnyId" Text="Company Code" /></th> 
     ... more columns ... 
    </tr> 
    </thead> 

    <tbody> 
     <tr runat="server" id="itemPlaceholder"></tr> 
    </tbody> 

    <tfoot> 
     <tr><td colspan="7" style="text-align: center;"> 
      <asp:Button runat="server" ID="BtnAddRecord" Text="Add Record" OnClick="BtnAddRecord_Click" /> 
     </td></tr> 
    </tfoot> 
    </table> 
</LayoutTemplate> 

<InsertItemTemplate> 
    <tr> 
     <td> 
      <asp:HiddenField runat="server" ID="HiddenID" Value="-1" /> 
      <asp:TextBox runat="server" ID="TextCmpnyId" Text='<%# Eval("CmpnyId") %>' MaxLength="6" Width="50" /> 
     </td> 

     ... more fields ... 
    </tr> 
</InsertItemTemplate> 

... other templates ... 
</asp:ListView> 

在背後說我的代碼:

protected void BtnAddRecord_Click(object sender, EventArgs e) 
{ 
    List1.EditIndex = -1; 
    List1.InsertItemPosition = InsertItemPosition.LastItem; 
    //Button button = (Button)List1.Controls[0].FindControl("BtnAddRecord"); 
    //button.Visible = false; 
} 

// ItemCommand() is an empty shell for now... 
protected void List1_ItemCommand(object sender, ListViewCommandEventArgs e) 
{ 
    switch (e.CommandName.ToLower()) 
    { 
     case "sort": 
      break; 

     case "edit": 
      break; 

     case "insert": 
      break; 

     case "update": 
      break; 

     case "cancel": 
      break; 

     case "delete": 
      break; 
    } 
+0

什麼是你的OnItemInserting,OnItemXXXing等事件。代碼在沒有這些事件的情況下工作 – codingbiz

+0

@codingbiz - 當我點擊按鈕時唯一被擊中的是ItemCommand(),我已經在上面添加了它。 –

+0

你的代碼仍然可用,'commandName ==「」' - 一個空字符串。在每個事件處理程序中放置一個斷點並調試我的代碼 – codingbiz

回答

1

我相信你必須重新綁定ListView控件,當你改變位置,因爲模板構建過程中被驅除結合。不是100%肯定...

+0

。在代碼隱藏中查看BtnAddRecord_Click()的第二行。我現在要閱讀這篇文章,看看我能從中收集些什麼。 –

+0

@BobKaufman對不起,錯過了。完全改變了我的答案。 –

+0

工作的聖牛!至於爲什麼,對我來說什麼都沒有意義! –