У меня есть 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.
Какой за ним будет код?
Это покажет 100 символов, а не слова.. @er-sho
Так как ваши слова отделились друг от друга? Не могли бы вы предоставить образец ввода?
Только первые 100 слов @Crowcoder
Да, я понял это после того, как вы показали образец, но ваш вопрос мог быть (и был) истолкован по-разному.
Не могли бы вы решить это?
По сути, вам нужно изменить источник данных перед его привязкой. Вы можете преобразовать свою таблицу данных в модель представления, которая выполняет String.Split в этом столбце, или вы можете добавить столбец в таблицу данных, перебрать строки, установив его значение в результат первых 100 токенов разделения, а затем привязать этот столбец к ваш список данных вместо оригинала. У меня нет фактического ответа, это поможет?





Один подход был бы,
Вы можете перебирать строки в таблице данных внутри вашего набора данных, а затем брать только 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 слов.
Хорошо, попробуйте оставить только пробел в функции разделения, например => .Split(new char[] { ' ' })
Сколько запятой и точки в вашей строке, я думаю, их будет 11, поэтому она показывает только 89 слов
Спасибо, это сработало. с .Split (новый символ [] { ' ' }). Большое спасибо.
Так почему бы не попробовать получить из sql запроса всего 100 букв? используя вот так =>
SELECT SUBSTRING(itemdescription, 0, 100) AS itemdescription FROM tbitem?