1

是否有可能让 Gridview 第 508 节兼容涵盖 g 点和 h 点?

第 508 节链接http://www.access-board.gov/sec508/guide/1194.22.htm ASP.Net 第 508 节合规链接http://www.patuee.com/web/ASPX_Accessibility.html#t7

4

2 回答 2

1

GridView 的问题在于表格是自动生成的,因此转换为 ListView 会付出努力;然后,您可以在 ListView 模板中以任何您想要的方式显示表格标记。

为了让 GridView 执行此操作,您必须创建一个新的自定义控件 GridView,它继承自开箱即用的控件。然后您可以自定义新控件的表格渲染输出。那里有许多自定义 GridViews 的例子:)

根据微软的说法,可访问性可以通过 GridView 来实现:

http://msdn.microsoft.com/en-us/library/ms228004.aspx#guideline_13__separating_structure_from_presentation

于 2012-05-07T12:52:43.633 回答
0

经过一番研究和谷歌搜索,我找到了解决方案。我在下面写下代码并在 RowDataBound 事件中调用它。

私人无效 AddGridHeadersAttr(对象发送者,GridViewRowEventArgs e,GridView 网格)

{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        for (int col = 0; col <= e.Row.Cells.Count - 1; col++)
        {
            e.Row.Cells[col].Attributes.Add("id", "ColumnHeader_" + Grid.Columns[col].HeaderText);
        }
    }
    else if (e.Row.RowType == DataControlRowType.DataRow)
    {
        for (int col = 0; col <= e.Row.Cells.Count - 1; col++)
        {
            Object oCell = e.Row.Cells[col];
            if (oCell is DataControlFieldHeaderCell)
            {
                ((DataControlFieldHeaderCell)oCell).Attributes.Add("id", "RowHeader_" + Grid.Columns[col].HeaderText + e.Row.RowIndex.ToString());//Grid.DataKeys[e.Row.RowIndex].Value.ToString());
            }
            else
            {
                ((DataControlFieldCell)oCell).Attributes.Add("headers", "ColumnHeader_" + Grid.Columns[col].HeaderText + " RowHeader_" + Grid.Columns[col].HeaderText + e.Row.RowIndex.ToString()); // Grid.DataKeys[e.Row.RowIndex].Value.ToString());
            }
        }
    }
}

希望这对将来的人有所帮助。

于 2012-05-08T12:39:31.237 回答