2013-06-05 3 views
0

У меня есть элемент управления Gridview asp.net, в котором я собираюсь показать два столбца, одно текстовое поле, а другое - поле изображения. Сетка должна быть расширяемой и должна показывать все изображения. Когда я запускаю страницу, все изображения строк отображаются одинаково. Как решить эту проблему?Как отобразить несколько строк изображений в gridview из таблицы sql

! [Грид просматривать результаты] [1]

Я использовал Imagehandler файл

 SqlConnection conn = new SqlConnection(connString); 
    string sqlsts = "SELECT us.name, us.image from userdetails as us where us.user_id in (select user_id from user_team where team_id in (select team_id from teaminfo where teamname='" + team + "'))"; 
    SqlCommand command = new SqlCommand(sqlsts, conn); 
    conn.Open(); 
    DataTable dtst = new DataTable(); 
    SqlDataAdapter adp = new SqlDataAdapter(sqlsts, conn); 
    adp.Fill(dtst); 
    int roc = dtst.Rows.Count; 
    int coc = dtst.Columns.Count; 
    for (int i = 0; i < roc; i++) 
    { 
     Byte[] imageData = (Byte[])dtst.Rows[i]["image"]; 
     context.Response.BinaryWrite((Byte[])dtst.Rows[i]["image"]); 
     context.Response.ContentType = "image/jpeg"; 
     context.Response.End(); 
     } 

ответ

0

Ваш обработчик, хотя проходит через петлю, будет возвращать только первое изображение, которое попадается.

Называя эти строки ....:

 context.Response.BinaryWrite((Byte[])dtst.Rows[i]["image"]); 
    context.Response.ContentType = "image/jpeg"; 
    context.Response.End(); 

..... ваших по сути говоря «Хорошо, вы можете остановить сейчас и выплюнуть этот образ» - ваши другие изображения в цикле выиграл» t достигнута.

Ваш обработчик должен действительно возвращать только одно изображение.

Так что измените свой обработчик, чтобы он отображал только одно изображение, вы можете поместить идентификатор изображения, которое хотите отобразить в строке запроса, а затем вызвать обработчик из вашего gridview.

Нечто подобное (например, не проверял)

<asp:TemplateField HeaderText="MyImage"> 
    <ItemTemplate> 
     <asp:Image runat="server" ImageURL='<%# Eval("imageID", "myHandler.ashx?id={0}") %>' /> 
    </ItemTemplate> 
    </asp:TemplateField> 

Ваш обработчик теперь может получить id строку запроса, выберите соответствующее изображение из базы данных, а затем Response.BinaryWrite() его.

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