.aspx
<table style="width: 800px" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td colspan="3">
                </td>
            </tr>
            <tr>
                <td style="height: 14px" colspan="3">
                    <asp:DataList ID="DataList1" runat="server"  OnItemDataBound="DataList1_ItemDataBound" >
                    <HeaderTemplate>
                    <table border="1" cellpadding="0" cellspacing="0" >
                    <tr>
                    <td style="width:80px;font-size:12px;text-align:center; font-weight:bold">品牌
                    </td>
                    <td style="width:720px;font-size:12px;text-align:center; font-weight:bold">类别
                    </td>
                    </tr>
                    </table>
                    </HeaderTemplate>
                    <ItemTemplate>
                    <tr>
                    <td style="width:80px;font-size:12px;text-align:center">
                    <%# DataBinder.Eval(Container.DataItem,"brand_name") %>
                    </td>
                    <td style="width:720px;text-align:left">
                        <asp:DataList ID="DataList2" runat="server" RepeatColumns="3" Width="500px">
                        <ItemTemplate>
                            <table border="0" cellpadding="0" cellspacing="0">
                                <tr>
                                <td>
                                    <asp:Label id="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"kind_name") %>' style="font-size:12px"></asp:Label>:
                                </td>
                                <td>
                                    &nbsp;&nbsp;<asp:TextBox ID="TextBox1" runat="server" style="font-size:12px; width:80px"></asp:TextBox> 
                                </td>
                                </tr>
                            </table>
                            </ItemTemplate>
                        </asp:DataList> 
                    </td>
                    </tr>
                    </ItemTemplate>
                    </asp:DataList>
                </td>
            </tr>
            <tr>
                <td colspan="3" style="height: 50px">
                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="添加" /></td>
            </tr>
        </table>.cs
protected void Page_Load(object sender, EventArgs e)
    {
        BindDataList1();
    }    protected void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataList childDatalist = (DataList)e.Item.FindControl("DataList2");
            SqlConnection sqlconn1 = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
            sqlconn1.Open();            string sqlstr1;
            sqlstr1 = "select * from kind";
            SqlDataAdapter da1 = new SqlDataAdapter(sqlstr1, sqlconn1);
            DataSet ds1 = new DataSet();
            da1.Fill(ds1);
            childDatalist.DataSource = ds1;
            childDatalist.DataBind();
        }
    }
        protected void BindDataList1()
    {
        SqlConnection sqlconn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
        sqlconn.Open();        string sqlstr;
        sqlstr = "select * from brand";
        SqlDataAdapter da = new SqlDataAdapter(sqlstr, sqlconn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataList1.DataSource = ds;
        DataList1.DataBind();        sqlconn.Close();
    }问题:我该如何通过button1来获取Datalist1和Datalist2里的值,特别是如何获得Datalist2中的TextBox的值。

解决方案 »

  1.   

    不知道有没有好办法,只会遍历DataList1然后FindControl("DataList2"),然后遍历DataList2再FindControl("TextBox")
      

  2.   

     protected void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e) 
        {
             DataList1.ItemCommand += new DataListCommandEventHandler( DataList1_ItemCommand );
        }
    void DataList1_ItemCommand( object source , DataListCommandEventArgs e )
        {
          在这写就是    }
      

  3.   

    DataList控件DataList是一个相对复杂一点的数据绑定控件,它需要使用者自己定义数据的展现格式,也就是需要在html层控制数据的展示格式。和GridView控件每行只能显示一条记录不同,DataList可以在一行显示多条记录。DataList支持以下模版:AlternatingItemTemplate、EditItemTemplate、FooterTemplate、HeaderTemplate、ItemTemplate和SelectedItemTemplate及SeparatorTemplate。其中AlternatingItemTemplate、EditItemTemplate、FooterTemplate和HeaderTemplate及ItemTemplate在TemplateField的支持的模版类型时已经介绍了,SelectedItemTemplatem模版是当该项处于选中状态的效果,SeparatorTemplate是各项之间分隔显示效果。DataList有两个重要属性,如下:RepeatColumns:DataList中要显示的列数。默认是0,即按照RepeatDirection的设置单行或者单列显示数据。RepeatDirection:DataList的显示方式,这个属性是一个枚举值,有Horizontal和Vertical两个值,分别代表水平和垂直显示。在使用DataList时经常会嵌套绑定,所谓嵌套就是在一个数据绑定控件中嵌套着另一个数据绑定控件。下面演示一下DataList进行嵌套绑定的效果。在这个效果里,首先将UserInfo表中的数据按照性别分类,然后在每种性别里分别跳出三个用户显示。首先向页面中添加一个DataList控件,如下图:点击“模版”,在它的ItemTemplate模版中再添加一个Label控件和一个DataList控件,如下图:对上述操作生成的前台代码我们做一些修改,如下:
      

  4.   


    //当绑定DataList1中的每一项时的处理方法 
        protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
        { 
            //如果要绑定的项是交替项或者是普通项 
            //注意此外还有脚模板和脚模版 
            if (e.Item.ItemType == ListItemType.Item || 
                 e.Item.ItemType == ListItemType.AlternatingItem) 
            { 
                //e.Item表示当前绑定的那一行 
                //利用e.Item.FindControl("Label1")来找到那一行的id为"Label1"的Label控件 
                Label lbSex = (Label)(e.Item.FindControl("Label1")); 
                //利用e.Item.FindControl("Label1")来找到那一行的id为"Label1"的Label控件 
                DataList dl2 = (DataList)(e.Item.FindControl("DataList2"));             bool male = bool.Parse(lbSex.Text); 
                dl2.DataSource = GetDataTable(male); 
                dl2.DataBind(); 
            } 
        } 
      

  5.   

    asp.net夜话之八:数据绑定控件
    在asp.net中所有的数据库绑定控件都是从BaseDataBoundControl这个抽象类派生的,这个抽象类定义了几个重要属性和一个重要方法:DataSource属性:指定数据绑定控件的数据来源,显示的时候程序将会从这个数据源中获取数据并显示。DataSourceID属性:指定数据绑定控件的数据源控件的ID, 显示的时候程序将会根据这个ID找到相应的数据源控件,并利用这个数据源控件中指定方法获取数据并显示。DataBind()方法:当指定了数据绑定控件的DataSource属性或者DataSourceID属性之后,再调用DataBind()方法才会显示绑定的数据。并且在使用数据源时,会首先尝试使用DataSourceID属性标识的数据源,如果没有设置DataSourceID时才会用到DataSource属性标识的数据源。也就是说DataSource和DataSourceID两个属性不能同时使用。数据绑定控件的DataSource控件属性必须是一个可以枚举的数据源,如实现了ICollection、IEnumerable或IListSource接口的类的实例。