2011-04-10 8 views
0

J'avais l'habitude d'avoir le UpdatePanel comme enveloppe pour l'élément Listview entier.La valeur ne peut pas être nulle. Nom du paramètre: contrôle

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:ListView ID="ListView1" runat="server"> 
      <LayoutTemplate> 
       <asp:PlaceHolder id="itemPlaceholder" runat="server" /> 
      </LayoutTemplate> 
      <ItemTemplate> 
       '.... 
      </ItemTemplate> 
     </asp:ListView> 
    </ContentTemplate> 
<Triggers></Triggers> 
</asp:UpdatePanel> 

et enregistrer le script client comme suit ...

Private Sub ListView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles ListView1.ItemCommand 
    if Not ClientScript.IsClientScriptBlockRegistered(Me.[GetType](), "OtherScript") Then 
     ScriptManager.RegisterStartupScript(DirectCast(Page.FindControl("UpdatePanel1"), UpdatePanel), GetType(String), "alertScript", "update('hpClips','false','inc')", True) 
    End If 
End sub 

Maintenant, j'ai décidé d'envelopper seul le groupe de ImageButtons avec des panneaux de mise à jour comme suit ...

<asp:ListView ID="ListView1" runat="server"> 
    <LayoutTemplate> 
     <asp:PlaceHolder id="itemPlaceholder" runat="server" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always" RenderMode="Block"> 
      <ContentTemplate> 
       <asp:ImageButton ID="btnAttach" runat="server" CommandName='<%# "AddC_" & Eval("QID") & "_" & Eval("Label") %>'/> 
       <asp:ImageButton ID="btnFavorite" runat="server" CommandName='<%# "AddF_" & Eval("QID") & "_" & Eval("Label") %>'/> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </ItemTemplate> 
</asp:ListView> 

et j'obtiens l'erreur suivante

Value cannot be null. Parameter name: control 

lors de l'exécution ScriptManager.RegisterStartupScript(DirectCast(Page.FindControl("UpdatePanel1"), UpdatePanel), GetType(String), "alertScript", "update('hpClips','false','inc')", True)

Je pense que cela a à voir avec le fait que le contrôle updatepanel n'a pas été trouvé. Et la distribution directe lève l'exception. Alors, comment pourrais-je résoudre ce problème? Merci d'avance.

MISE À JOUR: J'ai essayé celui-ci aussi. (Cette fois, je reçois pas une exception, mais le script client est pas exécuté)

Private Sub ListView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles ListView1.ItemCommand 
    Dim UpdPanel As New UpdatePanel 
    For Each Up As UpdatePanel In e.Item.Controls.OfType(Of UpdatePanel)() 
      UpdPanel = Up    
    Next 

    if Not ClientScript.IsClientScriptBlockRegistered(Me.[GetType](), "OtherScript") Then 
     ScriptManager.RegisterStartupScript(DirectCast(UpdPanel, UpdatePanel), GetType(String), "alertScript", "update('hpClips','false','inc')", True) 
    End If 
End sub 
+0

http://stackoverflow.com/questions/3399441/value-cannot-be-null-parameter- nom-contrôle –

+0

@Jani Pardon moi? Je ne comprends pas très bien, pourquoi est-ce lié à ma question – OrElse

+0

Par cela je voulais dire que c'est une erreur générale comme la 'référence d'objet non définie sur une instance d'objet', Vérifiez le studio visuel pour attraper toutes les exceptions jeter un oeil à la appeler la pile de l'endroit où l'exception a été lancée, voir les locaux et les voitures, les chances sont que vous pouvez trouver la solution de cette façon. –

Répondre

Questions connexes