在c#中设置gridview +模板的交替行样式

本文关键字:样式 设置 gridview | 更新日期: 2023-09-27 18:16:10

我正在开发一个web应用程序。我需要将一些值绑定到gridview,我成功地做到了,但我有一些问题…

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

代码如下:

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

结果表有以下表:Priority, Title, Date和Link。

当我绑定一切,我得到一个很好的表,与所有需要的数据,但一切都是文本,但在我的情况下,我想有标题与"链接来自列链接在结果表"的链接,是的,我也想重新格式化日期。

我该怎么做呢?

另一件事是我如何设置行样式和交替行样式,属性似乎只有GET,我如何设置它?

我再重复一遍,课堂上所有的东西都应该是c#的

在c#中设置gridview +模板的交替行样式

可以为GridView定义列。在您的情况下,我觉得您需要一个类型为HyperLinkField的列。在该类中,您可以指定属性DataNavigateUrlFieldsDataTextField。DataTextField允许您从包含显示文本的数据源指定字段的名称,在您的示例中,它听起来像是Title列。DataNavigateUrlFields允许您指定用于填充URL的数据源中的字段-在您的情况下,这听起来像是来自数据源的"Link"列。我不确定您是如何做事情的,但是下面的代码片段向您展示了如何向GridView添加HyperLink列。根据您提供的代码,看起来您并没有手动定义要使用的列,但是如果您想要所需的行为,您可能必须手动定义所需的所有列。

    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上指定autogeneratecolcolumns为False。

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

要获得您想要的数据格式,您必须显式地创建列:

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;