2013-12-23 2 views
0

Я создал ListView, в который я вставил столбец кнопок, который я бы хотел вызвать в событии ItemCommand, но когда я нажимаю кнопку, я получаю загрузку страницы, но ничего не происходит (событие ItemCommand don огонь).Listvew ItemCommand not fire

<asp:ListView ID="ListView_documenti" runat="server" OnLoad="carica_ListView" OnItemCommand="esegui_comando"> 
<LayoutTemplate> 
    <table id="Table1" runat="server" class="ListViewUCSS"> 
     <tr id="Tr1" runat="server"> 
      <td id="Td1" runat="server"> 
       <table ID="itemPlaceholderContainer" runat="server" border="0" style="" > 
        <tr id="Tr2" runat="server" class="ListViewUHEADER"> 
         <th id="Th0" runat="server" style="width:40%">Nome File</th> 
         <th id="Th3" runat="server" style="width:20%">Vedi</th>        
        </tr> 
        <tr ID="itemPlaceholder" runat="server"></tr> 
       </table> 
      </td> 
     </tr> 
     <tr id="Tr3" runat="server"> 
      <td id="Td2" runat="server" style=""> 
      </td> 
     </tr> 
    </table> 
</LayoutTemplate> 
<ItemTemplate> 
    <tr class="ListViewUTENTI"> 
     <td><asp:Label ID="nomeLabel" runat="server" Text='<%# Eval("nome") %>' /></td> 
     <td><asp:button ID="vediDocButton" runat="server" Text="Vedi documento" CommandName="vedi_doc" /></td>    
    </tr> 
</ItemTemplate> 
<AlternatingItemTemplate> 
    <tr class="ListViewUTENTIALTERNATING"> 
     <td><asp:Label ID="nomeLabel" runat="server" Text='<%# Eval("nome") %>' /></td> 
     <td><asp:button ID="vediDocButton" runat="server" Text="Vedi documento" CommandName="vedi_doc" /></td>   
    </tr> 
</AlternatingItemTemplate> 
<EmptyDataTemplate> 
    <table id="Table1" runat="server" style=""> 
     <tr> 
      <td>Nessun documento caricato per il seguente trust.</td> 
     </tr> 
    </table> 
</EmptyDataTemplate>  

и это код Позади части связаны в ItemCommand Event

protected void esegui_comando(object sender, ListViewCommandEventArgs e) 
    { 
     ListViewItem item = e.Item; 
     Label etichetta = (Label)item.FindControl("nomeLabel"); 
     etichetta = (Label)e.Item.FindControl("nomeLabel"); 
     //a questo punto capisco che button ha scatenato l'evento 
     switch(e.CommandName) 
     { 
      case "vedi_doc": 
       //indirizzo la pratica verso la pagina di visione delle pratiche 
       Response.Redirect("../scarica_documento.aspx?n=" + etichetta+"&c="+cartella); 
       break; 

     } 
    } 
+0

Где и как вы связываете свой просмотр списка в codebehind? Вы перепроверяете его при каждой загрузке страницы? –

+0

Я привязываю свой ListView к событию onLoad (с функцией «carica_ListView») и запускается при каждой загрузке страницы. –

+0

Теперь я переместил функцию «carica_ListView» в событие init, а событие ItemCommand работает –

ответ

1

Вы также можете изменить свой код события OnLoad как:

protected void carica_ListView(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
    //Your code 
    } 
} 

Это предотвратит повторное связывание ListView при обратной передаче.

Смежные вопросы