как сохранить содержимое панели в c #?

#c# #asp.net

#c# #asp.net

Вопрос:

Я работаю над проектом на c #, и у меня возникла проблема с сохранением моей панели. У меня есть список, в котором я выбрал форму, которую хочу загрузить в свою панель. Но когда я хочу сохранить свою панель, ее содержимое невозможно прочитать. После сохранения моей панели я хочу преобразовать ее в PDF-документ, но когда я не могу ее сохранить, это невозможно сделать. Кто-нибудь может мне помочь, пожалуйста?

     protected void btnPDF_Click(object sender, EventArgs e)
    {
        int teller = 0;

        foreach (Control Ctrl in pnlMain.Controls)
        {
            if (Ctrl is Label)
            {
                teller  ;
            }

        }

        int teller2 = 0;
        Label[] arr_label = new Label[teller];

        foreach (Control Ctrl in pnlMain.Controls)
        {
            if (Ctrl is Label)
            {
                Label lbl_Ctrl = Ctrl as Label;
                arr_label[teller2] = lbl_Ctrl;
                teller2  ;
            }
        }

        int teller3 = 0;
        int lengte = arr_label.Length;
        String hulp1;


        //aanmaken van uw document
        var doc1 = new Document(PageSize.A4, 50, 50, 25, 25);

        //aanmaken van  de outputstream
        var output = new MemoryStream(); //geen extra argumenten nodig

        //aanmaken van een "pdfwriter document"
        var writer = PdfWriter.GetInstance(doc1, output);

        //voor je in je document iets kan "schrijven" moet je het eerst openen:
        doc1.Open();

        while (teller3 < lengte)
        {
            Label hulp;

            hulp = arr_label[teller3];
            hulp1 = hulp.Text;
            teller3  ;

            //bepaal de inhoud van je pdf document (locatie)
            string inhoud = File.ReadAllText(Server.MapPath("pdf.aspx"));
            var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(hulp1), null);

            //alle elementen van uw pagina in de pdf steken (foreach.... zeer handige functie)
            foreach (var htmlElement in parsedHtmlElements)
                doc1.Add(htmlElement as IElement);

        }
        //nu de pdf gemaakt is gaan we de boel afsluiten:
        doc1.Close();

        Response.ContentType = "application/pdf";
        Response.AddHeader("Content-Disposition", string.Format("attachment;filename= Evaluatierapport.pdf"));
        Response.BinaryWrite(output.ToArray());       
    }





      private void btnSave_Click(object sender, EventArgs e) 
      {
          SaveFileDialog saveFileDialog = new SaveFileDialog();

          saveFileDialog.DefaultExt = "bmp";
          saveFileDialog.Filter = "Bitmap files|*.bmp";
          if (saveFileDialog.ShowDialog() == DialogResult.OK)
          {
              int width = pnlMain.Width;
              int height = panel.Height;

              Bitmap bitMap = new Bitmap(width, height);
              System.Drawing.Rectangle rec = new Rectangle(0, 0, width, height);

              panel.DrawToBitmap(bitMap, rec);

              bitMap.Save(saveFileDialog.FileName);
          }
      }
}
  

Комментарии:

1. Это невозможно сделать. Каким образом? Какие ошибки? Исключения?

2. Не смотрите на код под btnSaveClick, потому что это полностью ошибка. Это выдает ошибку кассиру (count), он не может прочитать содержимое файла .cs, но он может прочитать содержимое панели в .aspx

Ответ №1:

Я так понимаю, что вы динамически загружаете элементы управления:

У меня есть список, в котором я выбрал форму, которую хочу загрузить в свою панель.

Динамически добавляемые элементы управления не сохраняются при обратной передаче. Вам нужно будет добавить их снова с теми же идентификаторами … или просмотреть viewstate самостоятельно.

[править]

Взгляните на эти:

[/ править]

Комментарии:

1. да, в этом проблема. но что вы имели в виду, говоря «Вам нужно будет добавить их снова с теми же идентификаторами … или просмотреть viewstate самостоятельно»?

2. Обновлено. Взгляните на две ссылки, которые я добавил.