2009-04-11 17 views
1

新しい.net/C#Web Begginnerとして、私はFindControlを使用しようとするといつもうまくいった。 Blam - 私の顔に浮かぶ。ここに私の現在にFindControlの問題です:DataList編集モードのFindControl

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

次があります。私は.aspxページとフォームを持っている

、その後、AJAXのUpdatePanelは、その中に私のDataList EditItemTemplateを持っている(DataList1)があります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."; 
    } 

だから、もちろん、私は取得しています「オブジェクトのインスタンスに設定されていないオブジェクト参照」:後ろの私のC#コードでは、私はするFileUploadオブジェクトのクリック時のコードを持っています。

OnClickイベントでこれらのコントロールを処理する前に、これらのコントロールを見つける正しい構文は何ですか?

アイブにFindControlを使用する唯一の方法は、のようなものです:ラベルとして

ラベルthumbnailUploadLabel = DataList1.FindControl( "thumbnailUploadLabel");

もちろん、これは「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーを投げています。どんな助力も非常に感謝しています。

(私はまた、FindControlを使いやすくするための「再帰的な」コードを見たことがあります)Ha!私は自分のプロジェクトにそれらを組み込む方法を知らないC#で非常に緑色です。 )

ありがとうございました。

答えて

1

あなたは今まだ

によってあなたのコードでこれらの行を追加する場合

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."; 
     } 
    } 
それを考え出している必要があります....私は、これは後半地獄のたくさんある知っているが、私が回答する質問を探していました

これは...

を編集している行のための適切なコントロールを見つけるも、更新パネルbeacuse更新パネルのうち、あなたのデータリストを維持するFileUploadと互換性がありません。あなたがコードを実行する場合、それは常に表示されますサムネイル画像アップロード。ファイルのとして偽。

+0

こんにちはPankaj、応答に感謝します。遅刻は決して良くない。私はあなたが上に投稿したものに類似したコードを使用して終了しました。はい、私はUpdatePanelの問題の中でFileUploadを発見しました。また、私は非常にエレガントなマルチファイルのアップロードオブジェクトとしてDean Brettle(www.brettle.com)のNeatUploadを発見しました。必要が生じたら... – Doug

関連する問題