我想通过在datagrid_ItemDataBound事件里得到<%# DataBinder.Eval(Container.DataItem,"path" )%>当前的值,还有得到<%# DataBinder.Eval(Container.DataItem,"path" )%>值之后向附值Image1.ImageUrl<asp:DataGrid ID="mydatagrid" runat="server" AutoGenerateColumns="False" Width="100%"
                                ShowHeader="False" CellPadding="4" ForeColor="#333333" GridLines="None" OnItemDataBound="mydatagrid_ItemDataBound">
                                <Columns>
                                    <asp:TemplateColumn>
                                        <ItemTemplate>
                                            <table>
                                                <tr>
                                                    <td rowspan="2" style="text-align: center;">
                                                        <div>
                                                            <asp:Label Visible="false" ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"path" )%>'></asp:Label>  
    <asp:Image ID="Image1" runat="server" />                                                    </div>                                                                                                                                                                                                                                                                           
                                                    </td>                                                    
                                                </tr>                                                
                                            </table>
                                        </ItemTemplate>
                                    </asp:TemplateColumn>
                                </Columns>
                                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <EditItemStyle BackColor="#999999" />
                                <SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                <AlternatingItemStyle BackColor="White" ForeColor="#284775" />
                                <ItemStyle BackColor="#F7F6F3" ForeColor="#333333" />
                                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                            </asp:DataGrid>
protected void mydatagrid_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        foreach (Control c in e.Item.FindControl("Label1").Controls)
        {
            Label label = (Label)c;
            string path = label.Text;
        }
    }

解决方案 »

  1.   


    foreach (Control c in e.Item.FindControl("Label1")) 
            { 
                Label label = (Label)c; 
                string path = label.Text; 
            } 
      

  2.   

    如果你只有表头的话,加一句
    if (e.Item.ItemIndex > 0)
    把表头过滤掉就可以了,因为表头里没有Label1还有:e.Item.FindControl("Label1")找到的就是Label1了,不需要再遍历找他的子控件这样写吧
    if (e.Item.ItemIndex > 0)
    {            Label label = e.Item.FindControl("Label1") as Label;
                if(label != null)
                string path = label.Text; 
         }
      

  3.   

    if (null==e.Item)
    return;
    if(e.Item.ItemIndex<0)
    return;
     Label label = e.Item.FindControl("Label1") as Label; 
                if(label != null) 
                string path = label.Text; 
      

  4.   

     if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.EditItem)
            {
                foreach (Control c in e.Item.FindControl("Label1").Controls)
                {
                    Label label = (Label)c;
                    string path = label.Text;
                }
            }ITEMPLATE 模板是内容行,而datagrid_ItemDataBound 事件是从HEADER 模板,到FOOTER 开始遍历的...
    这样,试一下
      

  5.   


    protected void mydatagrid_ItemDataBound(object sender, DataGridItemEventArgs e) 
        { 
            if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item)
    {
          Label lbl=  e.Item.FindControl("Label1") as Label;
          if(lbl!=null)
           {
               string path = lbl.Text; 
          }
    }
        }