2009-09-03 99 views

回答

2

如果你不喜歡在你的aspx頁面使用內聯代碼爲大衛曾建議做模板與它字面的控制和實現OnDataBinding事件:

例如,在網格爲您現場下面的模板:

<asp:TemplateField HeaderText="Your Header Name"> 
    <ItemTemplate> 
     <asp:Literal runat="server" ID="litYourCustomField" OnDataBinding="litYourCustumField_DataBinding"></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

然後你實現昂達taBinding在你的代碼背後:

protected void litYourCustomField_DataBinding(object sender, System.EventArgs e) 
{ 
    Literal lit = (Literal)(sender); 
    int yourInt = Convert.ToInt32(Eval("YourNumber")); 
    lit.Text = (yourInt == 1) ? "It's a 1" : "It's something else"; 
} 

我更喜歡這種方法的內聯代碼,因爲它沒有在你的aspx頁面代碼。我通常在我的.cs文件中定義了一個#region,它通過數據綁定代碼完成。我非常確定性能方面,他們幾乎完全相同,除非可能是視圖狀態啓用的文字控制開銷。確保在不需要時關閉視圖狀態。

0

如果這是ASP.Net,可以讓這個模板列並執行以下操作:

<ItemTemplate> 
    <%# MyConversionFunction(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "IntegerFieldName"))) %> 
</ItemTemplate> 

protected string MyConversionFunction(int ValueToCheck) 
{ 
    if(ValueToCheck.ToString() == "0") 
    { 
     return "SomeText"; 
    } 
    else 
    { 
     return SomeValue.ToString(); 
    } 
}