Bir GridView içinde kullanılan BoundField'ı genişleten bir denetim oluşturmak istiyorum. Yapmak istediğim, DataField özelliğine benzer bir şekilde, bir veri sütunu adını vermek istediğim HighlightField adlı başka bir özellik sağlamaktır. Veri sütunu göz önüne alındığında, değerin doğru ya da yanlış olup olmadığını ve verilen satırdaki verilen sütunda belirtilen metni vurguladığını görür.Bir (ASP.NET) BoundField'in genişletilmesi
o yapmaz Bazı psuedo kod duygusu:
<asp:GridView id="grid">
<Columns>
<asp:BoundField DataField="Name" />
<cc:HighlightField DataField="Name" HighlightField="IsHighlighted" />
</Columns>
</asp:GridView>
Ve sonra DataBind falan içinde:
if(this row's IsHighlighted value is true)
set the CssClass of this datacell = "highlighted"
(or wrap a span tag around the text)
Ravish doğru yönde beni işaret etti, burada bitti ne kadar olan:
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";
}
}
}
Hoşuma gidiyor, ona bir girdap vereceğim ve geri döneceğim – rball
İki yönlü veri bağlama yapmanın bir yolu yok mu? "IsHighlighted" adlı HighlightBoundField üzerinde bir boolean özelliği oluşturabilir ve böyle bir şey yapabilir misiniz: –
Chris