前台代码:
<asp:DataList ID="DataList1" runat="server" EnableViewState="False" RepeatColumns="1">
<ItemTemplate>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td align="middle" width="150">
<%# Eval("BigClassName").ToString()%> <br />
<asp:DataList ID="DataList3" runat="server">
<ItemTemplate>
<%# Eval("SmallClassName").ToString()%>
</ItemTemplate>
</asp:DataList>
</td>
<td align="middle" width="184"><%# Eval("BigID").ToString() %>
</td>
<td align="middle" height="20" width="150">
添加子栏目|修改|删除</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
后台代码: protected void Page_Load(object sender, EventArgs e)
{
string cmd = "select * from Hover_BigClass_New";
DataSet ds = new DataSet();
OleDbDataAdapter dr = new OleDbDataAdapter(); OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); dr.SelectCommand = new OleDbCommand(cmd,constr);
dr.Fill(ds,"cmd"); DataList1.DataSource = ds;
DataList1.DataBind(); dr.Dispose();
dr = null;
ds.Dispose();
ds = null;
constr.Close();
} protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); OleDbCommand cs=new OleDbCommand();
cs.Connection=constr;
cs.CommandText="select * from Hover_SmallClass_New"; DataSet ds = new DataSet();
OleDbDataAdapter dr = new OleDbDataAdapter(); dr.SelectCommand = cs;
dr.Fill(ds); DataList DL = (DataList)e.Item.FindControl("DataList2");
DL.DataSource = ds;
DL.DataBind(); dr.Dispose();
dr = null;
ds.Dispose();
ds = null;
constr.Close();
}
}为什么只能列出来第一个DataList的数据,第二个datalist没有反应...;.
<asp:DataList ID="DataList1" runat="server" EnableViewState="False" RepeatColumns="1">
<ItemTemplate>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td align="middle" width="150">
<%# Eval("BigClassName").ToString()%> <br />
<asp:DataList ID="DataList3" runat="server">
<ItemTemplate>
<%# Eval("SmallClassName").ToString()%>
</ItemTemplate>
</asp:DataList>
</td>
<td align="middle" width="184"><%# Eval("BigID").ToString() %>
</td>
<td align="middle" height="20" width="150">
添加子栏目|修改|删除</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
后台代码: protected void Page_Load(object sender, EventArgs e)
{
string cmd = "select * from Hover_BigClass_New";
DataSet ds = new DataSet();
OleDbDataAdapter dr = new OleDbDataAdapter(); OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); dr.SelectCommand = new OleDbCommand(cmd,constr);
dr.Fill(ds,"cmd"); DataList1.DataSource = ds;
DataList1.DataBind(); dr.Dispose();
dr = null;
ds.Dispose();
ds = null;
constr.Close();
} protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); OleDbCommand cs=new OleDbCommand();
cs.Connection=constr;
cs.CommandText="select * from Hover_SmallClass_New"; DataSet ds = new DataSet();
OleDbDataAdapter dr = new OleDbDataAdapter(); dr.SelectCommand = cs;
dr.Fill(ds); DataList DL = (DataList)e.Item.FindControl("DataList2");
DL.DataSource = ds;
DL.DataBind(); dr.Dispose();
dr = null;
ds.Dispose();
ds = null;
constr.Close();
}
}为什么只能列出来第一个DataList的数据,第二个datalist没有反应...;.
测试下->dr.SelectCommand = cs;
dr.Fill(ds);
Response.Write(ds.Tables[0].Rows.Count); // ?
楼上的,那句代码没起作用.郁闷
select * from Hover_SmallClass_New ,
如果数据都不筛选的话,又是在vs2005下开发的话,可以考虑直接在页面绑定好数据呀 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Weith_SPHOAConnectionString %>"
ProviderName="<%$ ConnectionStrings:Weith_SPHOAConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM [Information]"></asp:SqlDataSource>
<br />
<asp:DataList CssClass="list" ID="DataList1" runat="server" DataSourceID="SqlDataSource1" OnItemDataBound="DataList1_ItemDataBound" RepeatColumns="3">
<SelectedItemStyle Wrap="False"></SelectedItemStyle>
<EditItemStyle Wrap="False"></EditItemStyle>
<AlternatingItemStyle Wrap="False"></AlternatingItemStyle>
<ItemStyle Wrap="False"></ItemStyle>
<ItemTemplate>
| <a href='Information.aspx?id=<%# Eval("InformationID") %>' ><%# Eval("Title").ToString().Length > 20 ? Eval("Title").ToString().Substring(0, 20) : Eval("Title").ToString()%></a>
<%# Eval("SendDate","{0:yyyy-MM-dd}")%> ┊
<asp:DataList ID="DataList3" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
| <a href='Information.aspx?id=<%# Eval("InformationID") %>' ><%# Eval("Title").ToString().Length > 20 ? Eval("Title").ToString().Substring(0, 20) : Eval("Title").ToString()%></a>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
第一个datalist1出现数据后,运行那个绿色按钮就变灰了.
后面的代码没有运行
<ItemTemplate>
<%# Eval("SmallClassName").ToString()%>
</ItemTemplate>
</asp:DataList>
*************************************************************************
DataList DL = (DataList)e.Item.FindControl("DataList2");
加上if(!IsPostBack)
EnableViewState="True"
datalist3不是按要求显示,而是每一条datalist1数据下会全列出datalist3的数据...怎么解决这个问题
<ItemTemplate>
<%# Eval("SmallClassName").ToString()%>
</ItemTemplate>
</asp:DataList>
*************************************************************************
DataList DL = (DataList)e.Item.FindControl("DataList2");
加上if(!IsPostBack)
EnableViewState="True"
BB对应bb,bb1,CC对应cc,cc1.
正确显示,应是这样。
AA
aa
aa1
BB
bb
bb1
现在的情况是显示这样的
AA
aa
aa1
bb
bb1
cc
cc1
----
BB
aa
aa1
bb
bb1
cc
cc1
也就是说,应有一个值从datalist1传给datalist3 ,让datalist3显示这个值相应的数据。
<asp:DataList ID="DataList1" runat="server" EnableViewState="False" DataKeyField="BigClassName" RepeatColumns="1" OnItemDataBound="DataList1_ItemDataBound">
<EditItemStyle Wrap="False"></EditItemStyle>
<AlternatingItemStyle Wrap="False"></AlternatingItemStyle> <ItemTemplate>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td align="middle" width="150">
<%# Eval("BigClassName").ToString()%> <br />
<asp:DataList ID="DataList3" runat="server" EnableViewState="True">
<ItemTemplate>
<asp:Label ID="Label_li" runat="server" Text='<%# Eval("SmallClassName").ToString()%>'></asp:Label>
</ItemTemplate>
</asp:DataList>
</td>
<td align="middle" width="184"><%# Eval("BigID").ToString() %>
</td>
<td align="middle" height="20" width="150">
添加子栏目|修改|删除</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
后台代码:
public partial class ClassConter : System.Web.UI.Page
{
string cmd = "select * from Hover_BigClass_New";
DataSet ds = new DataSet();
OleDbDataAdapter dr = new OleDbDataAdapter(); protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); dr.SelectCommand = new OleDbCommand(cmd, constr);
dr.Fill(ds, "cmd"); DataList1.DataSource = ds;
DataList1.DataBind(); dr.Dispose();
dr = null;
ds.Dispose();
ds = null;
constr.Close();
}
} protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
//for (int i = 0; i < DataList1.Items.Count; i++)
//{
if (!IsPostBack)
{
OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); OleDbCommand cs = new OleDbCommand();
cs.Connection = constr;
cs.CommandText = "select * from Hover_SmallClass_New"; DataSet ds1 = new DataSet();
OleDbDataAdapter dr1 = new OleDbDataAdapter(); dr1.SelectCommand = cs;
dr1.Fill(ds1);
Label li = (Label)e.Item.FindControl("Label_li");
int a1 = Convert.ToInt32(li.Text);
ds1.rrjj(ds, a1);//这里是重点问题??????
//DataList DL = (DataList)DataList1.Items[i].FindControl("DataList3");
DataList DL = (DataList)e.Item.FindControl("DataList3");
//EnableViewState = "True";
DL.DataSource = ds1;
DL.DataBind(); dr1.Dispose();
dr1 = null;
ds1.Dispose();
ds1 = null;
constr.Close();
}
}}
怎么解决绑定数据的问题?????
SmallClassName,SmallClassName要根据BigClassName来取值,有时BigClassName下有好几个SmallClassName
的值,也有时一个也没有
如你的AA某个ID是1 BB的该ID是2
将aa、aa1的某列ID设为1
bb、bb1的该列值设为2
这是最简单的解决方案
if(e.Item.ItemType==ListItemType.AlternatingItem || e.Item.ItemType==ListItemType.Item)
{
....
}
试试看。
int count=this.DataList1.Items.Count
if(count>=1)
{
for(int j=0;j<count;j++)
{
int Id=int.Parse(DataList1.DataKeys[j].ToString());//关联ID
DataList DataList3=(DataList)this.DataList1.Items[j].FindControl("DataList3"); DataList1.DataSource=//数据源
DataList1.DataBind();
}
}
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); OleDbCommand cs = new OleDbCommand();
cs.Connection = constr;
cs.CommandText = "select * from Hover_SmallClass_New"; DataSet ds1 = new DataSet();
OleDbDataAdapter dr1 = new OleDbDataAdapter(); dr1.SelectCommand = cs;
dr1.Fill(ds1);
Label li = (Label)e.Item.FindControl("Label_li");
int a1 = Convert.ToInt32(li.Text);
ds1.rrjj(ds, a1);//这里是重点问题?????? //DataList DL = (DataList)DataList1.Items[i].FindControl("DataList3");
DataList DL = (DataList)e.Item.FindControl("DataList3"); //EnableViewState = "True";
DL.DataSource = ds1;
DL.DataBind(); dr1.Dispose();
dr1 = null;
ds1.Dispose();
ds1 = null;
constr.Close();
}
}
http://blog.csdn.net/amandag/archive/2008/06/11/2537079.aspx上面有4种方式楼主可参考
前台:
<asp:DataList ID="DataList1" runat="server" EnableViewState="False" DataKeyField="BigClassName" RepeatColumns="1">
<EditItemStyle Wrap="False"></EditItemStyle>
<AlternatingItemStyle Wrap="False"></AlternatingItemStyle> <ItemTemplate>
<table align="center" border="0" cellpadding="3" cellspacing="1">
<tr>
<td align="middle" width="150">
<%# Eval("BigClassName").ToString()%> <br />
<asp:DataList ID="DataList3" runat="server" EnableViewState="True" DataSource='<%# GetDetails(Eval("BigClassID").ToString()) %>'>
<ItemTemplate>
<asp:Label ID="Label_ji" runat="server" Text='<%# Eval("SmallClassName").ToString()%>'></asp:Label>
</ItemTemplate>
</asp:DataList>
</td>
<td align="middle" width="184"><%# Eval("BigID").ToString() %>
</td>
<td align="middle" height="20" width="150">
添加子栏目|修改|删除</td>
</tr>
</table>
</ItemTemplate>
后台:
public partial class ClassConter : System.Web.UI.Page
{
string cmd = "select * from Hover_BigClass_New";
DataSet ds = new DataSet();
OleDbDataAdapter dr = new OleDbDataAdapter(); protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); dr.SelectCommand = new OleDbCommand(cmd, constr);
dr.Fill(ds, "cmd"); DataList1.DataSource = ds;
DataList1.DataBind();
DataList1.DataKeyField = "BigClassID"; dr.Dispose();
dr = null;
ds.Dispose();
ds = null;
constr.Close();
}
}
protected DataTable GetDetails(string BigClassID)
{
OleDbConnection constr = DBConnections.DBConnections.createConnection();
constr.Open(); OleDbCommand cs = new OleDbCommand();
string sqls = "select SmallClassName from Hover_SmallClass_New where BigClassID=@BigClassID"; DataSet ds1 = new DataSet();
OleDbDataAdapter dr1 = new OleDbDataAdapter(sqls,constr);
dr1.SelectCommand.Parameters.AddWithValue("@BigClassID", BigClassID);
dr1.Fill(ds1);
return ds1.Tables[0];
ds1.Dispose();
ds1 = null; constr.Close();
}}