【问题标题】:Setting alternating row style on grideview + templates in c#在 c# 中的 grideview + 模板上设置交替行样式
【发布时间】:2013-05-30 13:17:14
【问题描述】:

我正在开发一个网络应用程序。而且我需要将一些值数据绑定到gridview,我成功地做到了,但是我有一些问题......

基本上一切都发生在代码(c#)中,所以有一个直接页面,我在其中定义了gridview等......

代码如下:

        ResultTable searchResult=.... //Results

        gridSearchResults = new GridView();
        gridSearchResults.Width = Unit.Percentage(100.0);
        gridSearchResults.BorderWidth = 0;
        gridSearchResults.DataSource = resultsTable;
        gridSearchResults.DataBind();

结果表有以下表格:优先级、标题、日期和链接。

当我绑定所有内容时,我会得到一个漂亮的表格,其中包含所有需要的数据,但所有内容都是文本,但在我的情况下,我希望将标题作为链接与“来自结果表中的列链接的链接”是的,我也想重新格式化日期。

我该怎么做?

另外一个问题是如何设置行样式和交替行样式,属性好像只有GET,那我怎么设置呢?

我再重复一遍,一切都应该在 C# 类中发生。

【问题讨论】:

    标签: c# templates gridview css


    【解决方案1】:

    您可以为 GridView 定义列。就您而言,在我看来,您需要一个类型为HyperLinkField 的列。在该类中,您可以指定属性DataNavigateUrlFields 和DataTextField。 DataTextField 允许您从包含显示文本的 DataSource 中指定字段的名称,在您的情况下,这听起来像是 Title 列。 DataNavigateUrlFields 允许您从用于填充 URL 的数据源中指定字段 - 在您的情况下,这听起来像是数据源中的“链接”列。我不确定你是如何做事的,但下面的 sn-p 向你展示了如何将 HyperLink 列添加到你的 GridView。根据您提供的代码,您似乎没有手动定义要使用的列,但如果您想要所需的行为,您可能必须手动定义您需要的所有列。

        HyperLinkField titleLinkField = new HyperLinkField();
        titleLinkField.DataTextField = "Title";  //Column name providing hyperlink title
        titleLinkField.DataNavigateUrlFields = "Link";  //Column providing the URL to use.
    
        gridSearchResults.Columns.Add(titleLinkField);
    

    就定义交替行样式而言,您可以在该属性中设置属性。你可以单独设置每个属性,或者定义一个 CSS 类来使用。

        gridSearchResults.AlternatingRowStyle.CssClass = "myAlternatingClass";
        gridSearchResults.RowStyle.CssClass = "myRegularClass";
        // OR
        gridSearchResults.AlternatingRowStyle.ForeColor = Drawing.Color.Blue;
        gridSearchResults.RowStyle.ForeColor = Drawing.Color.Green;
    

    编辑:Paolo Tedesco 击败了我,他确实有我缺少的一点。您确实需要在 GridView 上将 AutoGenerateColumns 指定为 False。

    对于常规字段,你应该使用和上面基本相同,但是你可以使用BoundField而不是HyperLinkField。

    【讨论】:

      【解决方案2】:

      要根据需要格式化数据,您必须显式创建列:

      gridSearchResults = new GridView { 
          AutoGenerateColumns=false,
          // other properties...
      };
      gridSearchResults.Columns.Add(new HyperLinkField {
          HeaderText = "MyLink",
          DataTextField = "MyField"
          // and so on
      });
      

      那么,AlternatingRowStyle 是只读的,但您可以设置它的各个属性:

      gridSearchResults.AlternatingRowStyle.BackColor = System.Drawing.Color.Red;
      

      【讨论】:

      • 如果我想要普通字段而不是超链接字段怎么办?还有那个 HyperLinkField,我怎样才能从“链接”中获得价值?
      • “正常”是什么意思?
      猜你喜欢
      • 2010-12-07
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多