我有个系统,里面的代码是从VS2003直接升级到VS2005。其中有datagrid控件,代码如下:
<asp:datagrid id="Ngrid" runat="server" BackColor="#EFEFEF" BorderWidth="1px" Font-Names="Verdana"
AutoGenerateColumns="False" Font-Size="8pt" Font-Name="Verdana" CellPadding="0" BorderColor="White"
PageSize="20" AllowPaging="True" Width="100%" ShowHeader="False" GridLines="Horizontal"OnItemDataBound="Ngrid_ItemDataBound">
<AlternatingItemStyle BackColor="#F6F6F6"></AlternatingItemStyle>
<Columns>
<asp:TemplateColumn>
<ItemStyle HorizontalAlign="Center" Width="30px"></ItemStyle>
</asp:TemplateColumn>
<asp:BoundColumn Visible="False" DataField="id" ReadOnly="True" HeaderText="编 号"></asp:BoundColumn>
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="id" DataNavigateUrlFormatString="sshow.aspx?id={0}" DataTextField="title" DataTextFormatString="&amp;nbsp;{0}&amp;nbsp;">
<ItemStyle Height="22px"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="cdate" ReadOnly="True" HeaderText="发布时间" DataFormatString="&amp;nbsp;{0}&amp;nbsp;">
<ItemStyle Width="130px"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="views" HeaderText="点数" DataFormatString="[{0}]">
<ItemStyle HorizontalAlign="Center" Width="30px"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="uname" HeaderText="发布人">
<ItemStyle Width="100px" VerticalAlign="Bottom" HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField="cdate1"></asp:BoundColumn>
</Columns>
<PagerStyle VerticalAlign="Bottom" HorizontalAlign="Right" BackColor="#F6F6F6" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
我想取得其中的<asp:BoundColumn和<asp:HyperLinkColumn控件,用来改变字体颜色,在VS2005里ItemDataBound事件里用this.Ngrid.Items[e.Item.ItemIndex].Cells[1].Controls[0]方法取不到<asp:BoundColumn控件,而且这些控件没有ID,无法用e.Item.FindControl方法找到,我该怎么办???

解决方案 »

  1.   

    能否说的详细一些。是不是用gridview替换datagrid。如果是那样则需要重新编写整页代码,而且不能保证正确。我想问能否在不改变源代码的基础上进行添加,我只是需要取出这两个控件,然后根据条件改变字体颜色而已。
      

  2.   

    在属性生成器里面将超链接列和绑定列都转化为模版列,然后设置模版列里面空间的id,在ItemDataBound事件里面就可以操作这些列了