none
Как вставить/отобразить ссылку в GridView? RRS feed

  • Вопрос

  • Делаю вывод 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