5
我想創建一個擴展在GridView中使用的BoundField的控件。我想要做的是提供另一個名爲HighlightField的屬性,它將類似於DataField屬性,我想給它一個數據列的名稱。鑑於該數據列,它會查看該值是true還是false,並突出顯示給定行上給定列內的給定文本。擴展(ASP.NET)BoundField
一些僞代碼,如果是沒有意義:
<asp:GridView id="grid">
<Columns>
<asp:BoundField DataField="Name" />
<cc:HighlightField DataField="Name" HighlightField="IsHighlighted" />
</Columns>
</asp:GridView>
再內的數據綁定或東西:
if(this row's IsHighlighted value is true)
set the CssClass of this datacell = "highlighted"
(or wrap a span tag around the text)
姦污我指出正確的方向,這是我結束了:
public class HighlightedBoundField : BoundField
{
public string HighlightField
{
get { return ViewState["HighlightField"].ToString(); }
set
{
ViewState["HighlightField"] = value;
OnFieldChanged();
}
}
public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex)
{
base.InitializeCell(cell, cellType, rowState, rowIndex);
bool isDataRowAndIsHighlightFieldSpecified = cellType == DataControlCellType.DataCell && !string.IsNullOrEmpty(HighlightField);
if (isDataRowAndIsHighlightFieldSpecified)
{
cell.DataBinding += new EventHandler(cell_DataBinding);
}
}
void cell_DataBinding(object sender, EventArgs e)
{
TableCell cell = (TableCell)sender;
object dataItem = DataBinder.GetDataItem(cell.NamingContainer);
cell.Text = DataBinder.GetPropertyValue(dataItem, DataField).ToString();
bool highlightThisCellsText = Convert.ToBoolean(DataBinder.GetPropertyValue(dataItem, HighlightField));
if (highlightThisCellsText)
{
cell.CssClass += " highlight";
}
}
}
我喜歡它,我會給它一個旋轉和回 – rball 2009-09-04 18:03:32
有沒有辦法做雙向數據綁定?你可以在你的HighlightBoundField上創建一個名爲「IsHighlighted」的布爾屬性,並執行如下操作:'/> –
Chris
2011-01-04 17:57:12