2017-02-10 7 views
0

Есть ли способ заполнить список флажков через datasource/databind, а затем на самом деле добавить изображение к каждому флажку? Я знаю, как делать как по отдельности, так и по-разному, но не могу понять, как заставить их работать вместе.Добавление изображения в список флажков после привязки

По существу, у меня будет список участников для учителей, из которых вы хотите выбрать, и меня попросили поместить снимок каждого ученика рядом с этим флажком.

То, как я получаю изображения в настоящее время, у меня есть веб-форма, которая вводит идентификатор в URL-адрес, а затем он захватывает blob с базы данных, а затем преобразует двоичный файл в миниатюрное изображение, сохраняет его локально, а затем перенаправляет на него. то, когда я хочу получить изображение на другой веб-форме, мне просто нужно использовать Response.Redirect("imgs.aspx?ID=[Student Id]"), и он будет помещен в небольшое изображение ученика, есть ли способ изменить список флажков, чтобы я мог вызвать веб-форму imgs и отобразить образ ученика рядом с их флажком?

код за imgs.aspx:

protected void Page_Load(object sender, EventArgs e) 
    { 
     var stuId = Request.QueryString["ID"]; 

     if (stuId.Length <= 0) 
     { 
      stuId = "100097645"; // If no ID number sent, display default 'image not available' thumbnail. 
     } 
     var con = new SqlConnection 
     { 
      ConnectionString = 
       removed for security reasons 
     }; 
     con.Open(); 
     var sqlCommand = new SqlCommand("Select BINARY_OBJECT FROM BLOBS WHERE OWNER_REF=" + stuId, con); 
     var reader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection); 
     reader.Read(); 

     var byteArray = (byte[])reader["BINARY_OBJECT"]; 
     var mstream = new System.IO.MemoryStream(byteArray, 0, byteArray.Length); 
     var dbImage = System.Drawing.Image.FromStream(new System.IO.MemoryStream(byteArray)); 
     var thumbnailImage = dbImage.GetThumbnailImage(100, 100, null, new IntPtr()); 
     thumbnailImage.Save(mstream, dbImage.RawFormat); 
     var thumbnailByteArray = new byte[mstream.Length]; 
     mstream.Position = 0; 
     mstream.Read(thumbnailByteArray, 0, Convert.ToInt32(mstream.Length)); 
     Response.Clear(); 
     Response.BinaryWrite(thumbnailByteArray); 
    } 

код я до сих пор, чтобы отобразить изображение:

private void StudentSelected() 
{ 
    string query = "Select distinct (Convert(varchar, PERSON_CODE) + '|' + FORENAME + ' ' + SURNAME) as StudentName, (Convert(varchar, PERSON_CODE) + '|' + FORENAME + '|' + SURNAME) as StudentValue From people where (FORENAME = '" + stuforename + "') and (SURNAME = '" + stusurname + "') and (Convert(varchar,PERSON_CODE) = '" + stuid + "')"; 
       StudentCheckBoxData.Merge(GetData(query)); 
       cbSelection.DataSource = StudentCheckBoxData; 
       cbSelection.DataTextField = "StudentName"; 
       cbSelection.DataValueField = "StudentValue"; 
       cbSelection.DataBind(); 

      try 
      { 
       foreach (ListItem checkBox in cbSelection.Items) 
       { 
        checkBox.Text += string.Format("<img src = \"{0}\" /> ", GetImageUrl(checkBox.Text.Split('|')[0])); 

       } 
      } 
      catch 
      { 
        //Display Error Here 
      } 

} 
    private string GetImageUrl(string id) 
     { 
      return string.Format("http://bceforms/Contact/imgs.aspx?ID=", id); 
     } 

Проблема на данный момент он показывает границу, но изображение, которое появляется a Thumbnail не найденное изображение, когда у меня была эта проблема до того, как это было из-за того, что изображение не было привязано к базе данных, но когда я использовал .databind(); в списке флажков, потому что, очевидно, исходный источник данных не имеет изображения, он просто удаляет изображение

Любая помощь будет apprecieated

ответ

0

Я не думаю, что это хороший способ в производительности, чтобы сохранить данные изображения в SQL, Вместо этого вы можете сохранить URL изображения в SQL и сохранить файл изображения. И в конце кода у вас есть проблема:

private string GetImageUrl(string id) 
    { 
     return string.Format("http://bceforms/Contact/imgs.aspx?ID=", id); 
    } 

Вы должны изменить, что это:

private string GetImageUrl(string id) 
    { 
     return string.Format("http://bceforms/Contact/imgs.aspx?ID={0}", id); 
    } 

После установки этого, пожалуйста, дайте знать результат.

+0

Отлично работает! Благодаря! –

+0

Добро пожаловать. очень рад помочь. –

 Смежные вопросы

  • Нет связанных вопросов^_^