У CAbbot есть отличное предложение. Я никогда не делал это таким образом, но если это работает для вас, тогда мне это нравится; простой, элегантный, эффективный.
То, как я всегда это делал, проходило через источник данных. Если вы привязываете SqlDataSource
к вашему GridView
, вы можете выполнить запрос на выборку, подобный этому:
DECLARE @temp NVARCHAR(255);
DECLARE @maxLength INT;
SET @temp = 'The quick brown fox jumped over the lazy dog.';
SET @maxLength = 10;
SELECT CASE WHEN LEN(@temp) > @maxLength THEN SUBSTRING(@temp, 0, @maxLength) + '...' ELSE @temp END
Что касается решения проблемы с вашим RowDataBound
, это тоже должно работать. Но вам не нужно выполнять кастинг, попробуйте вместо этого:
protected void Ds_my_projects_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[1].Text.ToString().Length > 200)
{
e.Row.Cells[1].Text = e.Row.Cells[1].Text.ToString().Substring(0, 200) + "...";
}
}
}