在一个DataGrid的绑定列中有一个DataList,在DataList每行中有Button、Label,在DataGrid每行中有按钮,我要在DataGrid中如何做才能获得DataList中点击按钮后该行的Label值。

解决方案 »

  1.   

    这个很简单的
    <asp:DataGrid ID="Grid1" Runat="server">
      <asp:DataList ID="DataList1" Runat="server" OnItemCommand="DataList1_ItemCommand">
    <ItemTemplate>
       <asp:Label ID=lblTest Runat =server></asp:Label>
    </ItemTemplate>
    </asp:DataList>
    </asp:DataGrid>在后台代码中:
    public void DataList1_ItemCommandobject source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if (e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
    {
        Label lblTest=e.item.FindControl("lblTest");
    }
    }就行了

    </ItemTemplate>
    </asp:Repeater>&nbsp; </td>
      

  2.   

    前台代码写错了,应该是
    <asp:DataGrid ID="Grid1" Runat="server">
    <Columns>
    <asp:TemplateColumn>
      <asp:DataList ID="DataList1" Runat="server" OnItemCommand="DataList1_ItemCommand">
    <ItemTemplate>
       <asp:Label ID=lblTest Runat =server></asp:Label>
    </ItemTemplate>
    </asp:DataList>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
      

  3.   

    但这并不是在DataGrid中得到的啊,DataGrid又是哪一行呢?
      

  4.   

    你这个问题有点绕,有个思路比如
    你在DataGrid 的ItemCommand事件中处理
         
         则DataList dl = (DataList)(e.Item.FindControl(datalist的ID));
         对于datalist的dl再找点击按钮的这一行DataListItem dli,再用dli去findcontrol 那个Label应该可以吧,我没试过,但findcontrol是这样用的!
      

  5.   

    致上一楼: fisher12345(fisher) 这样做不能得到DataList的事件参数,也就是那个e 不能定确定下来。
      

  6.   

    能说说你的目的吗?虽然我的代码是在datalist的itemcommand事件里,但是也能够在里面处理datagrid里当前行的数据,只要用(DataGridItem)e.parent就行了
      

  7.   

    我用这样一个思路的目的就是实现主从表结构。在DataGrid中实现主表记录,DataList内实现从表记录,再用一个按钮来处理是否关闭当前DataList的显示,这样做的好处显而易见。