1

新しい .net/C# Web ビギナーとして、FindControl を使おうとするといつもつまずいてしまいます。ブラム - 私の顔に平ら。ここに私の現在のFindControlの問題があります:

.aspx ページとフォーム、次に ajax updatePanel があり、その中には、EditItemTemplate: を持つ DataList (DataList1) があり、次のものがあります。

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

私の C# コード ビハインドには、fileUpload オブジェクトの OnClick コードがあります。

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

したがって、もちろん、FileUpload と Label について「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。

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

私が FindControl を使用した唯一の方法は、次のようなものです。

ラベルのサムネイルUploadLabel = DataList1.FindControl("thumbnailUploadLabel") としてラベル;

しかしもちろん、これは「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーをスローしています。どんな助けでも大歓迎です。

(また、FindControl の使用を容易にするはずの「再帰的」コードも見てきました。Ha! 私は C# が苦手なので、それらを自分のプロジェクトに組み込む方法さえ知りません。)

これを見てくれてありがとう。

4

1 に答える 1

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

これにより、編集している行に適切なコントロールが見つかります...

また、更新パネルはFileUploadと互換性がないため、データリストをUPdateパネルに含めないでください。実行すると、コードは実行されますが、thumbnailImageUpload.HasFileは常にFalseとして表示されます。

于 2009-09-14T06:22:13.713 に答える