Поскольку вы работаете в ItemTemplate, вам действительно не нужно использовать Bind(). Вы можете использовать Eval() вместо того, чтобы и сделать что-то вроде:
<%# Eval("Address").ToString().Substring(0, 100) %>
Есть две проблемы, связанные с таким простым решением:
Первый, когда поле адреса имеет нулевое значение, вы должны сделать проверку что. Во-вторых, если строка короче 100 символов, она также потерпит неудачу, так как .NETs Substring() пытается убедиться, что вы всегда получаете ровно 100 символов и выдает исключение, если строка короче. Поэтому вы должны добавить код, чтобы убедиться, что вам действительно нужно вырезать строку.
И теперь он чувствует себя, как, возможно, мы должны сделать небольшой вспомогательный метод вместо:
public static class Extensions
{
public static String Limit(this String s, int length)
{
if (s == null)
return String.Empty;
return s.Substring(0, Math.Min(s.Length, length));
}
}
Тогда утверждение Eval будет выглядеть следующим образом:
<%# ((string)Eval("Address")).Limit(100) %>
(Это предполагает, что адрес действительно является строка)
извините .. произошла ошибка: Ошибка «объект» не содержит определения для «SubString» и не используется метод расширения «SubString» accept может быть найден первый аргумент типа «объект» (вам не хватает директивы using или ссылки на сборку?) – Jack
Я не уверен, что возвращает Eval. Попробуйте сделать .ToString(). Вместо этого подстрока (0, 100). И, да, нет капитала S на String, просто опечатка. – Ostemar
«Метод Eval берет имя поля данных и возвращает строку, содержащую значение этого поля из текущей записи в источнике данных». - от http://msdn.microsoft.com/en-us/library/ms178366.aspx. Так что это должно сработать. Возможно, именно опечатка вызвала вашу проблему. – Ostemar