2015-05-11 3 views
1

Итак, мне нужно создать список элементов из базы данных, и я обычно делаю это с помощью GridView; однако для этого клиента требуется, чтобы, когда они выбирают элемент из списка, он автоматически отображает изображение элемента в другом месте.ASP.NET TableCell OnSelected?

Итак, я создал таблицу, и я создаю строки из кода позади, чтобы заполнить его.

Это таблица:

<asp:Table ID="tblWatches" CssClass="table table-striped" runat="server" Width="50%" BorderStyle="Double" BorderColor="Black"> 
    <asp:TableRow ID="TableRow1" runat="server"> 
     <asp:TableCell ID="tblCell1"> 
      <asp:Label ID="code" runat="server" Text="code"></asp:Label>     
     </asp:TableCell> 

     <asp:TableCell ID="tblCell2"> 
      <asp:Label ID="stock" runat="server" Text="stock"></asp:Label>     
     </asp:TableCell> 

     <asp:TableCell ID="tblCell3"> 
      <asp:Label ID="purchased" runat="server" Text="purchased"></asp:Label>     
     </asp:TableCell> 

     <asp:TableCell ID="tblCell4"> 
      <asp:Label ID="price" runat="server" Text="price"></asp:Label>     
     </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

В коде позади, я создаю строки так:

DataView view; 
view = getWatches(); 

TableRow rowNew; 
TableCell cellNew; 
Label lblNew; 

for (int i = 0; i < view.Count; i++) 
{  
    rowNew = new TableRow(); 
    tblWatches.Rows.Add(rowNew); 

    cellNew = new TableCell();    
    lblNew = new Label(); 
    lblNew.Text = Convert.ToString(view[i][1]); 
    cellNew.TabIndex = Convert.ToInt16(i + 1); 
    cellNew.Controls.Add(lblNew); 
    rowNew.Cells.Add(cellNew); 


    cellNew = new TableCell(); 
    lblNew = new Label(); 
    lblNew.Text = Convert.ToInt32(view[i][2]).ToString(); 
    cellNew.Controls.Add(lblNew); 
    rowNew.Cells.Add(cellNew); 


    cellNew = new TableCell(); 
    lblNew = new Label(); 
    lblNew.Text = Convert.ToString(view[i][3]); 
    cellNew.Controls.Add(lblNew); 
    rowNew.Cells.Add(cellNew); 

    cellNew = new TableCell(); 
    lblNew = new Label(); 
    lblNew.Text = Convert.ToString(view[i][4]); 
    cellNew.Controls.Add(lblNew); 
    rowNew.Cells.Add(cellNew); 
} 

Это прекрасно работает. Он создал строки, и я могу перебирать их с помощью клавиши Tab. Дело в том, что теперь я хочу иметь возможность использовать событие onselect, поэтому, когда клиент перебирает элементы, окно изображения обновляется. Но TableCell не имеет этого события. Есть ли обходной путь? Это вообще возможно?

P.S .: Почему табуляция на велосипеде? Они хотят, чтобы список выглядел как электронная таблица Excel, где вы можете перемещать элементы с помощью клавиш со стрелками. Самое близкое, что мне удалось сделать, это TabIndex.

+0

Постарайтесь добавить событие непосредственно в таблицу. Затем получите идентификатор выбранной ячейки. –

+0

В отличие от форумов, мы не используем «Спасибо», «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –

+0

Извините, я понятия не имел! Будет ли это помнить для будущей справки! – Franconstein

ответ

0

Типа TableCell как вы упомянули не OnSelected события, поэтому самый простой вариант, чтобы справиться с ней на переднем конце с JQuery путем связывания на событии фокуса для ячеек таблицы:

$(function() { 
    $("table[id$=tblWatches] tr td").on("focus", function() { 
     var code = $(this).parent("tr").find("td:first-child > label").text(); 
     // set img src here 
    }); 
}); 

Тогда в зависимости где хранятся файлы изображений, используйте код продукта, чтобы установить путь src на <img>. то есть "/images/products/" + code + ".jpg" или обработчик "/productimage.ashx?code=" + code

+0

У меня сейчас проблема, и я не могу обдумать ее. «переменная ничего не возвращает. Я изменил эту прокомментированную строку для предупреждения (« Код: «+ код +».)), и он возвращает пустое место, где должен быть код. ? – Franconstein

+0

Если у вас есть другая проблема, обычно считается, что лучше начать другой вопрос, так как проблема, вероятно, связана скорее с текущим состоянием вашего кода, чем с исходной проблемой. Скорее всего, хотя это будет иметь отношение к jQuery селекторы. –

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