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

#c# #asp.net #word #datalist

#c# #asp.net #word #datalist

Вопрос:

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

 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.
  

Какой код будет стоять за этим?

Комментарии:

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

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

3. Итак, как ваши слова отделены друг от друга? Не могли бы вы предоставить пример ввода?

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

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

Ответ №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();
  

Комментарии:

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

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

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

4. Спасибо, это сработало. с помощью .Split(new char[] { ‘ ‘ }). Большое спасибо.