Domanda

In qualità di nuovo / C # web begginner .net, ho sempre arrivare sgambetto quando provo ad usare FindControl. -TV Blam sul mio viso. Qui è il mio attuale problema FindControl:

Ho una pagina aspx e forma, quindi ajax UpdatePanel, al suo interno c'è la mia DataList (DataList1) che ha un EditItemTemplate: che ha il seguente:

<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>

Nel mio codice C # dietro Ho il codice OnClick per l'oggetto 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.";
     }

Così, naturalmente, sto ottenendo "riferimento oggetto non impostato su un'istanza di un oggetto" per la FileUpload e l'etichetta.

Qual è la sintassi corretta per trovare questi controlli, prima di trattare con loro in caso OnClick?

L'unico modo Ive usato FindControl è qualcosa di simile:

label thumbnailUploadLabel = DataList1.FindControl ( "thumbnailUploadLabel") come etichetta;

Ma naturalmente questo getta la "Oggetto non impostato a un'istanza di un oggetto" errore. Qualsiasi aiuto è molto apprezzato.

(Ho visto anche il codice 'ricorsivo' là fuori che dovrebbe rendere più facile utilizzando FindControl. Ah! Sono così verde in C # che io non so nemmeno come incorporare quelle nel mio progetto.)

Grazie a tutti per dare un'occhiata a questo.

È stato utile?

Soluzione

So che questo è un sacco di inferno in ritardo, ma ero alla ricerca di domande a cui rispondere .... si deve aver capito ormai, ma ancora

se si aggiunge queste righe nel codice

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.";
        }
    }

questo troverà il controllo appropriato per la riga che si sta modificando ...

mantenere anche la vostra Datalist fuori dal pannello di aggiornamento allucinante di aggiornamento I pannelli non sono compatibili con FileUpload. se si fa il codice verrà eseguito ma mostrerà sempre thumbnailImageUpload.HasFile False.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top