【发布时间】:2010-10-02 10:55:41
【问题描述】:
我想以编程方式在 DataGrid 中插入额外的行(作为副标题)。我在网上关注了一些文章(即来自http://aspalliance.com/723 的选项3),但它们都导致该行正确显示,但没有内容。
这是我正在使用的代码的重要部分:
private void MyDataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
{
// This method will create a subheading row if needed
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
// TableCell
TableCell tc = new TableCell();
tc.Controls.Add(new LiteralControl("foo"));
tc.ColumnSpan = e.Item.Cells.Count;
// DataGridItem
DataGridItem di = new DataGridItem(e.Item.ItemIndex + 1, 0, ListItemType.Item);
di.Height = new Unit(100, UnitType.Pixel);
di.CssClass = "testClass";
di.Controls.Add(tc);
// DataGrid Table
DataGrid dg = (DataGrid)sender;
Table childTable = (Table)dg.Controls[0];
childTable.Rows.Add(di);
}
}
这会在正确的位置生成以下标记,但没有 LiteralControl("foo")
<tr class="testClass" style="height:100px;">
</tr>
我想使用这种方法而不是操纵数据源本身。可能出了什么问题?
【问题讨论】:
-
我刚刚使用您发布的代码尝试了一个孤立的示例,它工作得很好。它必须与 DataGrid 的配置或代码中的其他内容有关。
-
我已经给你的答案+1,但我打算在 48 小时过去后将我自己的答案标记为选择的答案 - 不是自私,而是因为它提供了更多关于问题的原因。