Как ограничить количество слов в datalist?

У меня есть 200 слов в столбце описания, но я хочу отображать только 100 слов в метке в списке данных.

SqlDataAdapter adp = new SqlDataAdapter("select * from tbitem", ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
    DataSet ds = new DataSet();
    adp.Fill(ds);
    DataList1.DataSource = ds;
    DataList1.DataBind();

В HTML

<asp:DataList ID = "DataList1" runat = "server">           
            <ItemTemplate>
                <b>Name: </b> <%#Eval("itemnam") %><br />
                   <b>Description: </b> 
                <asp:Label ID = "Label1" runat = "server" Text='<%#Eval("itemdescription") %>'></asp:Label>  <br /><br />
            </ItemTemplate>               
        </asp:DataList>

И описание

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Viverra justo nec ultrices dui. At varius vel pharetra vel turpis nunc eget lorem dolor. Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Arcu non odio euismod lacinia at quis risus. Quam adipiscing vitae proin sagittis nisl. Consectetur lorem donec massa sapien faucibus et molestie. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan. Quis imperdiet massa tincidunt nunc. Risus sed vulputate odio ut enim blandit volutpat. Nunc id cursus metus aliquam eleifend. Tristique magna sit amet purus gravida quis blandit turpis. Sollicitudin tempor id eu nisl nunc. Enim eu turpis egestas pretium aenean pharetra magna. Nibh nisl condimentum id venenatis. Duis at tellus at urna condimentum mattis pellentesque.

Какой за ним будет код?

Так почему бы не попробовать получить из sql запроса всего 100 букв? используя вот так => SELECT SUBSTRING(itemdescription, 0, 100) AS itemdescription FROM tbitem ?

er-sho 20.04.2019 12:41

Это покажет 100 символов, а не слова.. @er-sho

Ghost 20.04.2019 12:48

Так как ваши слова отделились друг от друга? Не могли бы вы предоставить образец ввода?

er-sho 20.04.2019 12:49

Только первые 100 слов @Crowcoder

Ghost 20.04.2019 12:57

Да, я понял это после того, как вы показали образец, но ваш вопрос мог быть (и был) истолкован по-разному.

Crowcoder 20.04.2019 12:58

Не могли бы вы решить это?

Ghost 20.04.2019 13:01

По сути, вам нужно изменить источник данных перед его привязкой. Вы можете преобразовать свою таблицу данных в модель представления, которая выполняет String.Split в этом столбце, или вы можете добавить столбец в таблицу данных, перебрать строки, установив его значение в результат первых 100 токенов разделения, а затем привязать этот столбец к ваш список данных вместо оригинала. У меня нет фактического ответа, это поможет?

Crowcoder 20.04.2019 13:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один подход был бы,

Вы можете перебирать строки в таблице данных внутри вашего набора данных, а затем брать только 100 разделенных слов из столбца из каждой строки, а затем создавать строку из разделенного слова и привязывать ее к тому же столбцу.

Код не тестировался, но вы можете использовать что-то вроде ниже,

DataSet ds = new DataSet();

adp.Fill(ds);

foreach (DataRow row in ds.Tables[0].Rows)
{
    row["itemdescription"] = string.Join(" ", Convert.ToString(row["itemdescription"]).Split(new char[] { ' ' }).Take(100));
}   

ds.Tables[0].AcceptChanges();

DataList1.DataSource = ds;
DataList1.DataBind();

Это не показывает точные 100 слов. но только 89 слов.

Ghost 20.04.2019 13:33

Хорошо, попробуйте оставить только пробел в функции разделения, например => .Split(new char[] { ' ' })

er-sho 20.04.2019 13:35

Сколько запятой и точки в вашей строке, я думаю, их будет 11, поэтому она показывает только 89 слов

er-sho 20.04.2019 13:42

Спасибо, это сработало. с .Split (новый символ [] { ' ' }). Большое спасибо.

Ghost 20.04.2019 13:43

Другие вопросы по теме