2012-02-03 2 views
2

приветствия,отображения изображения/значок внутри ячейки depinding EXT.NET GridPanel на значение

мне нужно, чтобы отобразить изображение/значок и значение в качестве EXT.NET клетки (из более GridPanel). Значение исходит из данных. Значение может быть строкой «хорошо» или «плохо» и находится в столбце «Статус».

Например: good accept.png или bad cancel.png.

Планировка:

<ext:GridPanel ID="grid" runat="server"> 
<Store> 
    <ext:Store ID="Store1" runat="server"> 
      <Reader> 
       <ext:ArrayReader> 
        <Fields> 
         <ext:RecordField Name="status" Mapping="Status" /> 
        </Fields> 
       </ext:ArrayReader> 
      </Reader> 
     </ext:Store> 
    </Store> 
<ColumnModel ID="ColumnModel1" runat="server"> 
     <Columns> 
      <ext:Column DataIndex="status" Header="Status" Width="160"> 
      </ext:Column> 
     </Columns> 
</ColumnModel> 
</ext:GridPanel> 

Теперь я видел некоторые exaples, но я не могу показаться, чтобы получить картину, я думаю, что это что-то делать с этим:

<script type="text/javascript"> 
    function imgRenderer(value, meta, record, rowIndex, colIndex, store) { 
if(data == ‘good’) 
{ 
return "<img src='accept.png'/>" 
} 
else (data == "bad") 
     { 
      return "<img src='cancel.png'/>" 
     } 
    } 
</script> 

Дополнительная информация: http://miamicoder.com/2009/displaying-an-image-inside-an-ext-js-gridpanel-cell-part-2/ http://techmix.net/blog/2010/11/25/add-button-to-extjs-gridpanel-cell-using-renderer/

ответ

1

Я забыл вернуть значение.

<ext:Column ColumnID="columnStatus" DataIndex="omschrijving" Header="Status" Width="150"> 
       <Renderer Handler="return imgRenderer(value);" /> 
</ext:Column> 
0

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

Вариант 1:

В существующем коде, вы должны изменить data к value.

Пример

// existing 
if(data == ‘good’) 

// revised 
if(value == ‘good’) 

Вариант 2:

Переименование изображений в то же значение, что и значение, хотя это будет по-прежнему требует использования атрибута value вместо data. Переименуйте accept.png в good.png, и переименуйте его с «плохим» изображением. С этим изменением вам не нужно требовать оператор if | else.

Пример

// existing 
if(data == ‘good’) 
{ 
    return "<img src='accept.png'/>" 
} 
else (data == "bad") 
{ 
    return "<img src='cancel.png'/>" 
} 

// revised 
return '<img src="' + value + '.png"/>'; 

Надеется, что это помогает.

+0

Не повезло, сетка теперь даже не отображает данные. Любая идея, где я должен смотреть? Я добавил обработчик рендеринга, это путь? <внутр: Колонка ColumnID = "columnStatus" DataIndex = "omschrijving" Header = "Статус" Width = "150"> Danny

0

C#:

{ 
//.......... 

dt.Tables[0].Rows[i]["Icon"] = "images/myicon.png";; 
//............ 
} 

модель:

<ext:ModelField Name="Icon" /> 

colu mn:

<ext:TemplateColumn ID="myIcon" runat="server" Text="myIcon" DataIndex="Icon" Width="35" TemplateString='<img style="width:20px;height:20px;" src="{Icon}" />' /> 
+1

Этот вопрос немного стар, и там уже был принят. Рассмотрите комментарии, чтобы объяснить, как ваш ответ отличается и/или лучше от существующего. Добро пожаловать в переполнение стека! – GargantuChet

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