2009-05-28 5 views
0

Я хочу отобразить только 100 символов в Gridviews ItemTemplate. Когда я нажимаю кнопку «Редактировать», я хочу отобразить все связанное значение с помощью EditItemTemplate.Ярлык ItemTemplate внутри Gridview

<ItemTemplate> 

<asp:Label ID="Label2" runat="server" Text='<%# Bind("Address") %>'> </asp:Label> 

</ItemTemplate> 

Как я могу ограничить текст надписи 100 символами?

ответ

2

Поскольку вы работаете в 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) %> 

(Это предполагает, что адрес действительно является строка)

+0

извините .. произошла ошибка: Ошибка «объект» не содержит определения для «SubString» и не используется метод расширения «SubString» accept может быть найден первый аргумент типа «объект» (вам не хватает директивы using или ссылки на сборку?) – Jack

+0

Я не уверен, что возвращает Eval. Попробуйте сделать .ToString(). Вместо этого подстрока (0, 100). И, да, нет капитала S на String, просто опечатка. – Ostemar

+0

«Метод Eval берет имя поля данных и возвращает строку, содержащую значение этого поля из текущей записи в источнике данных». - от http://msdn.microsoft.com/en-us/library/ms178366.aspx. Так что это должно сработать. Возможно, именно опечатка вызвала вашу проблему. – Ostemar