Question

En tant que nouveau .net / C # begginner web, je suis toujours trébuché lorsque je tente d'utiliser FindControl. -flat Blam sur mon visage. Voici mon problème actuel de FindControl:

J'ai une page .aspx et le formulaire, puis ajax UpdatePanel, à l'intérieur il y a mon DataList (DataList1) qui a un EditItemTemplate: qui a les éléments suivants:

<EditItemTemplate>
<asp:Label ID="thumbnailUploadLabel" runat="server" text="Upload a new thumbnail image:"/><br />
<asp:FileUpload ID="thumbnailImageUpload" runat="server" />
<asp:Button ID="thunbnailImageUploadButton" runat="server" Text="Upload Now" OnClick="thumbnailUpload"/><br />
</EditItemTemplate>

Dans mon code C # derrière je le code OnClick pour l'objet fileUpload:

        protected void thumbnailUpload(object s, EventArgs e)

    {

    if (thumbnailImageUpload.HasFile)

      {

      //get name of the file & upload

          string imageName = thumbnailImageUpload.FileName;

          thumbnailImageUpload.SaveAs(MapPath("../../images/merch_sm/" + imageName));

          //let'em know that it worked (or didn't)
          thumbnailUploadLabel.Text = "Image " + imageName + "has been uploaded.";
         }
         else
         {
         thumbnailUploadLabel.Text = "Please choose a thumbnail image to upload.";
     }

Alors bien sûr, je reçois « référence d'objet non définie à une instance d'un objet » pour le FileUpload et l'étiquette.

Quelle est la syntaxe correcte pour trouver ces contrôles, avant de traiter avec eux en cas Surclic?

La seule façon Ive utilisé FindControl est quelque chose comme:

étiquette thumbnailUploadLabel = DataList1.FindControl ( "thumbnailUploadLabel") en tant que marqueur;

Mais bien sûr, ce jette l'erreur « référence d'objet non définie à une instance d'un objet ». Toute aide est très appréciée.

(je l'ai vu aussi le code récursif qui il est censé rendre l'utilisation plus facile FindControl. Ha! Je suis vert à C # que je ne sais même pas comment les intégrer dans mon projet.)

Merci à tous pour jeter un oeil à ce sujet.

Était-ce utile?

La solution

Je sais que c'est un enfer beaucoup en retard, mais je cherchais des questions à répondre .... vous devez avoir deviné maintenant, mais encore

si vous ajoutez ces lignes dans votre code

protected void thumbnailUpload(object sender, EventArgs e)
    {
        FileUpload thumbnailImageUpload =(FileUpload)DataList1.Items[DataList1.EditItemIndex].FindControl("thumbnailImageUpload");
        Label thumbnailUploadLabel = (Label)DataList1.Items[DataList1.EditItemIndex].FindControl("thumbnailUploadLabel");
        if (thumbnailImageUpload.HasFile)
        {

           //Your code here

        }
        else
        {
            thumbnailUploadLabel.Text = "Please choose a thumbnail image to upload.";
        }
    }

trouvera le contrôle approprié pour la ligne que vous modifiez ...

aussi garder votre Datalist hors du panneau UPdate beacuse Les panneaux à jour ne sont pas compatibles avec FileUpload. si vous faites le code fonctionne, mais il affichera toujours thumbnailImageUpload.HasFile Faux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top