.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>
<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的值。
<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>
<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的值。
{
DataList1.ItemCommand += new DataListCommandEventHandler( DataList1_ItemCommand );
}
void DataList1_ItemCommand( object source , DataListCommandEventArgs e )
{
在这写就是 }
//当绑定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();
}
}
在asp.net中所有的数据库绑定控件都是从BaseDataBoundControl这个抽象类派生的,这个抽象类定义了几个重要属性和一个重要方法:DataSource属性:指定数据绑定控件的数据来源,显示的时候程序将会从这个数据源中获取数据并显示。DataSourceID属性:指定数据绑定控件的数据源控件的ID, 显示的时候程序将会根据这个ID找到相应的数据源控件,并利用这个数据源控件中指定方法获取数据并显示。DataBind()方法:当指定了数据绑定控件的DataSource属性或者DataSourceID属性之后,再调用DataBind()方法才会显示绑定的数据。并且在使用数据源时,会首先尝试使用DataSourceID属性标识的数据源,如果没有设置DataSourceID时才会用到DataSource属性标识的数据源。也就是说DataSource和DataSourceID两个属性不能同时使用。数据绑定控件的DataSource控件属性必须是一个可以枚举的数据源,如实现了ICollection、IEnumerable或IListSource接口的类的实例。