我要怎么获得第二个DataList并为它赋值了?
<asp:DataList ID="dl_action" runat="server" width="99%">
                    <ItemTemplate>
                        <table style="width:100%;" width="99%">
                            <tr>
                                <td rowspan="3" style="width:15%">
                                    <asp:Label ID="Label4" runat="server" Text="您的好友:"></asp:Label><br />
                                    <asp:Label ID="lab_userId" runat="server" Text='<%# Eval("UserId") %>'></asp:Label><br />
                                </td>
                                <td>
                                    <asp:DataList ID="dl_info" runat="server" style="width:100%;">
                                        <ItemTemplate>
                                            <table style="width:100%;">
                                                <tr>
                                                    <td colspan="3">
                                                        <asp:Label ID="lab_time" runat="server" Text='<%# Eval("date") %>'></asp:Label>
                                                        <asp:Label ID="lab_ActionType" runat="server" 
                                                            Text='<%# getActionType(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"type"))) %>'></asp:Label>
                                                        <asp:Label ID="Label1" runat="server" Text="了他的"></asp:Label>
                                                        <asp:Label ID="lab_ObjType" runat="server" 
                                                            Text='<%# getObjType(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"objtype"))) %>'></asp:Label>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td colspan="3">
                                                        <a href='<%# Eval("hear") %>'><asp:Label ID="lab_title" runat="server" Text='<%# Eval("title") %>'></asp:Label></a>
                                                    </td>
                                                </tr>
                                            </table>
                                        </ItemTemplate>
                                    </asp:DataList>
                                </td>
                                <td></td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:DataList>

解决方案 »

  1.   


    protected void 外层_ItemDataBound(object sender, DataListItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    {
    string keyid = this.外层.DataKeys[e.Item.ItemIndex].ToString();
    DataList dls = (DataList)e.Item.FindControl("内嵌ID");
    if (dls != null) 
    {
    //dls.DataBind();
    }
    }
    }
      

  2.   

    同上,在最外面的datalist的itemdatabound事件中写下一层datalist吧绑定数据不过注意楼上的方法可能需要你设置datalist的key***属性!!!
      

  3.   

    e.Item.ItemIndex 老说我的索引超出范围   是怎么回事啊!!
      

  4.   

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
                {
    -----------
    你是不是忘记加这个条件了?
      

  5.   

    做过,第一种方法就行啊,
    需要设置datakeynames属性吧
      

  6.   

    private void dl_action_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
            {
                    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
                {
                      DataList   dl = null;
                      dl = (DataList)e.Item.FindControl("dl_info")
                   DataSet ds=new DataList();
                  .....
              dl.DataSource =ds;
                    dl.DataBind();
                  }
            }
    参考
      

  7.   

    private void dl_action_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
            {
                    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
                {
                      DataList   dl = null;
                      dl = (DataList)e.Item.FindControl("dl_info")
                   DataSet ds=new DataList();
                  .....
              dl.DataSource =ds;
                    dl.DataBind();
                  }
            }
    参考
      

  8.   

    可以这样做:
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.EditItem)
            {
                int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
                System.Web.UI.WebControls.DataList dl2;
                dl_info = (DataList)e.Item.FindControl("dl_info");
                string strWhere = " bcid=" + id + "";
                DataSet ds = dalaw.GetList(strWhere);
                dl_info.DataSource = ds.Tables[0].DefaultView;
                dl_info.DataBind();
            }