Лучший отвечающий
Как вставить/отобразить ссылку в GridView?

Вопрос
-
Делаю вывод CALM запроса в DateTable и GridView. Как мне сделать отображение гиперссылки в таблице чтоб по ней можно было перейти к елементу списка? Строку ссылки получил, но как заставить GridView отображать ее в виде ссылки незнаю. Подскажите плз.
5 августа 2011 г. 12:08
Ответы
-
Для столбцов, которые должны быть ссылкой, создавайте столбцы не типа SPBoundField, а типа HyperLinkField, указав свойство DataNavigateUrlFields = new[] {"YourUrlField"} и при необходимости свойство DataNavigateUrlFormatString.
YourUrlField - название столбца, в котором находится ссылка.
- Предложено в качестве ответа Aviw_ 6 августа 2011 г. 8:25
- Помечено в качестве ответа Aleksandr Shramko 8 августа 2011 г. 11:25
6 августа 2011 г. 8:25
Все ответы
-
Для столбцов, которые должны быть ссылкой, создавайте столбцы не типа SPBoundField, а типа HyperLinkField, указав свойство DataNavigateUrlFields = new[] {"YourUrlField"} и при необходимости свойство DataNavigateUrlFormatString.
YourUrlField - название столбца, в котором находится ссылка.
- Предложено в качестве ответа Aviw_ 6 августа 2011 г. 8:25
- Помечено в качестве ответа Aleksandr Shramko 8 августа 2011 г. 11:25
6 августа 2011 г. 8:25 -
Как вариант:
<Columns> <asp:TemplateField HeaderStyle-CssClass="ms-vh2" HeaderText="Название" SortExpression="Title"> <ItemTemplate> <a href='<%# DataBinder.Eval(Container.DataItem, "TitleLink")%>'><%# DataBinder.Eval(Container.DataItem, "Title")%></a> </ItemTemplate> </asp:TemplateField> </Columns>
6 августа 2011 г. 14:18 -
Работаю с просто с веб частью, не Visual Web Part. Щас поробую переехать на Visual Web Part и попробую использовать ваши советы8 августа 2011 г. 9:28
-
Visual Web Part не подходит - не позволяет использовать Sandbox Solutin. Использую следующий код для запроса
SPSiteDataQuery query = new SPSiteDataQuery(); string a = Convert.ToString(DateTime.Now.Date); //Ask for all lists created from the contacts template. query.Lists = "<Lists BaseType = '1'/>"; // Get the Title (Last Name) and FirstName fields. query.ViewFields = "<FieldRef Name=\"Title\" />" + "<FieldRef Name=\"ID\" Type = \"Int\" />" + "<FieldRef Name=\"LinkFilename\" />" + "<FieldRef Name=\"Created\" Nullable=\"TRUE\" Type=\"DateTime\"/>" + "<FieldRef Name=\"Modified\" Type=\"DateTime\"/>" + "<FieldRef Name=\"FileRef\" Type = \"String\" />" + "<FieldRef Name=\"_SourceUrl\" Type = \"String\"/>" + "<FieldRef Name=\"Modified_x0020_By\" />"; // Set the sort order. query.Query = "<Where>" + "<Or>" + "<And>" + "<Geq>" + "<FieldRef Name='Created' />" + "<Value IncludeTimeValue='TRUE' Type='DateTime'>" + sLastTime + "</Value>" + "</Geq>" + "<IsNotNull>" + "<FieldRef Name='LinkFilename' />" + "</IsNotNull>" + "</And>" + "<And>" + "<Geq>" + "<FieldRef Name='Modified' />" + "<Value Type='DateTime'>" + sLastTime + "</Value>" + "</Geq>" + "<IsNotNull>" + "<FieldRef Name='LinkFilename' />" + "</IsNotNull>" + "</And>" + "</Or>" + "</Where>" + "<OrderBy>" + "<FieldRef Name=\"Created\" />" + "</OrderBy>"; // Query all Web sites in this site collection. query.Webs = "<Webs Scope=\"SiteCollection\" />"; DataTable dt = web.GetSiteData(query);
и следующий для отображения:
DataView dv = new DataView(_dt); BoundField boundField = new BoundField(); //Имя файла boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "Name"; boundField.DataField = "LinkFilename"; this.grid.Columns.Add(boundField); //дата изменения boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "Изменен"; boundField.DataField = "Modified"; this.grid.Columns.Add(boundField); //дата создания boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "Создан"; boundField.DataField = "Created"; this.grid.Columns.Add(boundField); //относительная ссылка boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "FileRef"; boundField.DataField = "FileRef"; this.grid.Columns.Add(boundField); //библиотка документов boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "Библиотека"; boundField.DataField = "Библиотека"; this.grid.Columns.Add(boundField); //ссылки на документы boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "Ссылка"; boundField.HtmlEncode = true; boundField.HtmlEncodeFormatString = true; boundField.DataField = "Ссылка"; this.grid.Columns.Add(boundField); //состояние boundField = new BoundField(); boundField.HeaderStyle.BackColor = System.Drawing.Color.Plum; boundField.HeaderText = "Состояние"; boundField.HtmlEncode = true; boundField.HtmlEncodeFormatString = true; boundField.DataField = "Состояние"; this.grid.AutoGenerateColumns = false; dv.RowFilter = "[FileRef] NOT LIKE '%Style Library%'"; this.grid.DataSource = dv; this.grid.DataBind(); this.grid.AllowSorting = true; this.grid.HeaderStyle.Font.Bold = true;
Может где-то здесь можно условие задать по раскраске ячеек? Если нет то подскажите как еще в НЕ Visual Web Part можно раскрасить ячейки по условию?8 августа 2011 г. 10:04 -
Для столбцов, которые должны быть ссылкой, создавайте столбцы не типа SPBoundField, а типа HyperLinkField, указав свойство DataNavigateUrlFields = new[] {"YourUrlField"} и при необходимости свойство DataNavigateUrlFormatString.
YourUrlField - название столбца, в котором находится ссылка.
А можно кусок кода, или ссылочку?8 августа 2011 г. 11:08 -
Для столбцов, которые должны быть ссылкой, создавайте столбцы не типа SPBoundField, а типа HyperLinkField, указав свойство DataNavigateUrlFields = new[] {"YourUrlField"} и при необходимости свойство DataNavigateUrlFormatString.
YourUrlField - название столбца, в котором находится ссылка.
А можно кусок кода, или ссылочку?
Всем спасибо, разобрался сам )))8 августа 2011 г. 11:26