2010-09-22 103 views
1

HTML代码:Asp.net GridView控件绑定列格式

<asp:DataGrid ID="myGrid"> 
<Columns> 
    <asp:BoundColumn DataField="CustomerName" HeaderText="Customer"> 
     <ItemStyle Font-Bold="True" /> 
    </asp:BoundColumn> 
</Columns> 
</asp:DataGrid> 

代码背后:

public string TestFunction(string str) 
{ 
    return str.replace("A","B"); 
} 

如何调用TestFunction?数据字段=“TestFunction(客户名称)”

问候......

回答

2

你需要这样做在TemplateColumn中:

<asp:DataGrid ID="myGrid"> 
<Columns> 
    <TemplateColumn> 
     <ItemTemplate> 
      <%# TestFunction(Eval("CustomerName") as string) %> 
     </ItemTemplate> 
    </TemplateColumn> 
</Columns> 
</asp:DataGrid> 

然而,这意味着你将失去autosorting和编辑 - 但谁使用那反正:)

+0

如果绑定到DataView并且您创建了适当的EditItemTemplate,则不应该失去自动排序和编辑功能。 – 2010-09-22 13:55:46

+0

我想制作BoundColumn?我是谁? – Chicharito 2010-09-22 14:04:02

+0

@Oraclee如果你想把它作为一个属性添加到数据源中,你必须将它添加到你的数据源中 @Joel Etherton EditItemTemplate => true,然而排序不会起作用IIRC – veggerby 2010-09-23 06:48:59

0
DataField='<%# TestFunction((string)Eval("MasterDesc")) %>' 

UPDATE:

http://forums.asp.net/t/996979.aspx

+0

=数据绑定表达式仅在具有DataBinding的对象上受支持事件。 System.Web.UI.WebControls.BoundColumn没有DataBinding事件 – Chicharito 2010-09-22 14:01:37

+0

是的,根据veggerby,你需要将它放在模板中? – IrishChieftain 2010-09-22 16:14:44