c#
  • asp.net
  • gridview
  • 2010-08-13 6 views 0 likes 
    0

    J'ai conçu ma page avec un HtmlInputText comme suitHtmlInputTextbox montrant une erreur

    <asp:TemplateField> 
            <ItemTemplate> 
             <asp:Label ID="lblTrialPeriodEnds" runat="server" Text='<%# Eval("trialPeriodEnds","{0:dd/MM/yyyy}") %>'></asp:Label> 
            </ItemTemplate> 
            <HeaderTemplate> 
             TrialPeriodEnds 
            </HeaderTemplate> 
            <EditItemTemplate> 
            <input type="text" name="testinput" class="textbox" value='<%# Eval("trialPeriodEnds") %>' 
              id="txtEffectiveDate" runat="server" /> 
             <a onclick="showCalendarControl('txtEffectiveDate')" href="#"> 
              <img alt="cal" src="calendar.gif" style="width: 20px; height: 20px" border="0" /></a> 
        </EditItemTemplate> 
           </asp:TemplateField> 
    

    Mon code RowUpdating est le suivant

     HtmlInputText htmInput = (HtmlInputText)GridView1.Rows[e.RowIndex].FindControl("Daily"); 
        strExpiry = htmInput.Value; 
    

    Je reçois une erreur comme référence d'objet non définie à une instance d'un objet.

    Pourquoi est-il affiche peut tout dire sur

    Répondre

    4

    L'entrée que vous utilisez est une balise d'entrée HTML. Pour que ASP.NET puisse voir cette balise, vous devez inclure un attribut runat = "server". Cela indiquera à ASP.NET qu'il doit suivre le tag et que vous pourrez interagir avec celui-ci à partir de votre code. Sans ce tag, ASP.NET ne connaît pas le contrôle et par conséquent, il n'apparaît pas lorsque vous appelez FindControl.

    Notez que lorsque vous rendez ASP.NET conscient du contrôle, il peut modifier l'ID. C'est ainsi qu'ASP.NET s'assure que chaque contrôle a un ID unique. Votre exemple a le contrôle dans un GridView, donc l'ID du contrôle d'entrée sera modifié de sorte qu'ASP.NET sache que le contrôle est un enfant de GridView. Vous devrez modifier tout script côté client pour être informé du nouvel ID. Je déconseille de vérifier l'ID en HTML, puis d'attribuer simplement le nouvel ID en tant que modifications de la structure ASP.NET peut changer l'ID. Vous avez mentionné dans votre commentaire que vous utilisez jQuery. Je recommanderais d'utiliser une classe et que jQuery affecte le contrôle basé sur la classe du contrôle d'entrée.

    +0

    Mais ajouter runt = "Server" n'augmente pas mon calendrier – Dotnet

    +0

    Vous ne savez pas exactement ce que vous voulez dire. Il n'y a pas de calendrier dans le code que vous avez publié. – sgriffinusa

    +0

    J'ai utilisé un calendrier pour faire un popup en utilisant Jquery quand j'ai cliqué dans la zone de texte si j'utilise runat = "Serveur" je ne vais pas obtenir celui-là – Dotnet

    Questions connexes