Проблема в том, что вы предполагаете поиск по подстроке - это не то, как in
работает в списке. Например, на первой итерации ваш if
выглядит следующим образом:
if "07750" in ["target_07750_20181128.tsv.gz",
"target_07750_20181129.tsv.gz",
"target_07751_20181130.tsv.gz",
... ]:
Строка «07755» не является , а элементом этого списка. Он выглядит как подстрока, но in
не работает таким образом в списке. Вместо этого попробуйте это:
for filename in os.listdir('/usr/folder/'):
if '_' + store + '_' in filename:
print(filename)
Это помогает?
<BoundField DataField="!" />
может добиться цели (так как BoundField.ThisExpression
равняется"!").
<asp:TemplateField>
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
Я ожидаю, что Вам, возможно, придется поместить данные в класс обертки - например:
public class Wrapper<T> {
public T Value {get;set;}
public Wrapper() {}
public Wrapper(T value) {Value = value;}
}
Затем свяжите с a List<Wrapper<T>>
вместо этого (как Value
) - например, использование чего-то как (C# 3.0):
var wrapped = ints.ConvertAll(
i => new Wrapper<int>(i));
или C# 2.0:
List<Wrapper<int>> wrapped = ints.ConvertAll<Wrapper<int>>(
delegate(int i) { return new Wrapper<int>(i); } );
Это - в основном та же идея как Marc, но более простой.
Это создает анонимный класс обертки, который можно использовать в качестве источника данных сетки и затем связать столбец с участником "Значения":
List<int> list = new List<int> { 1,2,3,4};
var wrapped = (from i in list select new { Value = i }).ToArray();
grid.DataSource = wrapped;
Если необходимо написать имя свойства, которое будет представлено, необходимо инкапсулировать целое число (или строка) значение в классе со свойством, которое возвращает значение. В сетке только необходимо записать <%# Eval("PropertyName") %>
.