GRIDVIEW中数据源绑定后的属性绑定我一般采取2种办法
一个是BoundField,只要设置DataField的对应属性名即可;
如:
<asp:BoundField HeaderText ="系列" DataField="Catena" ItemStyle-Width="10%"/>
还有一个是TemplateField ,用来处理特殊的显示;
如:
<asp:TemplateField HeaderText ="年销量">
<ItemTemplate>
<%# GetSalesVolumes(Container.DataItem) %>
</ItemTemplate>
<ItemStyle Width="10%" HorizontalAlign="Center" />
</asp:TemplateField>
但是我在RowDataBound的绑定的一些事件中经常获取不到TemplateField中的文本值;
row.Cells[index].Text 的值为"";
后面查了些资料和思考了下,发现TemplateField是个容器,用来自定义显示的,绑定值为其的子容器;
调试监视了下发现
<ItemTemplate>
<%# GetSalesVolumes(Container.DataItem) %>
</ItemTemplate>
写法中row.Cells[index].Controls.count =1; 我GetType()了下发现,类型为DataBoundLiteralControl;
所以获取值的该列单元格的值方法为:
((DataBoundLiteralControl)row.Cells[index].Controls[0]).Text.Trim();
如果TemplateField包含多个子控件,就获取Cells[index]的Controls (类型为ControlCollection)来循环获取相应子控件,并进行相应的操作;