我想为Gridview控件创建一个简单的适配器,它将在<div>
标记内呈现单元格内容。
而不是呈现为
<table>
<tr>
<td>Some Data</td>
<td>Some Data</td>
</tr>
</table>
我希望它呈现为
<table>
<tr>
<td><div>Some Data</div></td>
<td><div>Some Data</div></td>
</tr>
</table>
我知道这可以通过其他方式使用Jquery或在RowDataBound中完成,但我特别想用适配器来完成。
在我看来,如果有一种方法可以查看创建默认.Net Gridview的适配器的代码,那么更改会很简单,但是我不知道如何获取该代码。
非常感谢任何帮助。
答案 0 :(得分:3)
Microsoft以CSS Friendly Control Adapters
的形式提供了控件适配器的参考实现您可以查看他们如何实施GridViewAdapter
以下是处理呈现行
的代码private void WriteRows(HtmlTextWriter writer, GridView gridView, GridViewRowCollection rows, string tableSection)
{
if (rows.Count > 0)
{
writer.WriteLine();
writer.WriteBeginTag(tableSection);
writer.Write(HtmlTextWriter.TagRightChar);
writer.Indent++;
foreach (GridViewRow row in rows)
{
if (!row.Visible)
continue;
writer.WriteLine();
writer.WriteBeginTag("tr");
string className = GetRowClass(gridView, row);
if (!String.IsNullOrEmpty(className))
{
writer.WriteAttribute("class", className);
}
writer.Write(HtmlTextWriter.TagRightChar);
writer.Indent++;
foreach (TableCell cell in row.Cells)
{
DataControlFieldCell fieldCell = cell as DataControlFieldCell;
if ((fieldCell != null) && (fieldCell.ContainingField != null))
{
DataControlField field = fieldCell.ContainingField;
if (!field.Visible)
{
cell.Visible = false;
}
// Apply item style CSS class
TableItemStyle itemStyle;
switch (row.RowType)
{
case DataControlRowType.Header:
itemStyle = field.HeaderStyle;
// Add CSS classes for sorting
SetHeaderCellSortingClass(gridView, field, itemStyle);
break;
case DataControlRowType.Footer:
itemStyle = field.FooterStyle;
break;
default:
itemStyle = field.ItemStyle;
break;
}
if (itemStyle != null && !String.IsNullOrEmpty(itemStyle.CssClass))
{
if (!String.IsNullOrEmpty(cell.CssClass))
cell.CssClass += " ";
cell.CssClass += itemStyle.CssClass;
}
}
writer.WriteLine();
cell.RenderControl(writer);
}
writer.Indent--;
writer.WriteLine();
writer.WriteEndTag("tr");
}
writer.Indent--;
writer.WriteLine();
writer.WriteEndTag(tableSection);
}
}