//两个存储过程都有一个输入参数,现在第一个存储过程输入参数是:manufacture_id
第二个输入参数是第一个记录集的brand_id字段,就是这个地方不知道怎么写?public void listPinPai()
{
int manufacture_id=Convert.ToInt32(Request["manufacture_id"]);
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
//第一个Repeater控件开始
SqlDataAdapter cmd = new SqlDataAdapter("cf_List_Pinpai", conn);
cmd.SelectCommand.CommandType =CommandType.StoredProcedure ;
cmd.SelectCommand.Parameters.Add("@manufacture_id",SqlDbType.Int);
cmd.SelectCommand.Parameters["@manufacture_id"].Value =manufacture_id;
//第一个Repeater控件结束 //第二个Repeater控件开始
SqlDataAdapter cmd1 = new SqlDataAdapter("cf_List_Chexi", conn);
cmd1.SelectCommand.CommandType =CommandType.StoredProcedure ;
cmd1.SelectCommand.Parameters.Add("@brand_id",SqlDbType.Int);
cmd1.SelectCommand.Parameters["@brand_id"].Value =?????; //这个输入参数怎么写?这里的数就是第一个记录集的brand_id,这里不知道怎么写?请哪位老大帮忙
//第二个Repeater控件开始
conn.Open(); DataSet ds = new DataSet();
cmd.Fill(ds, "pic");
DataTable dt=ds.Tables["pic"]; r1.DataSource=dt.DefaultView;
r1.DataBind(); cmd.Dispose();
conn.Close();
}
第二个输入参数是第一个记录集的brand_id字段,就是这个地方不知道怎么写?public void listPinPai()
{
int manufacture_id=Convert.ToInt32(Request["manufacture_id"]);
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
//第一个Repeater控件开始
SqlDataAdapter cmd = new SqlDataAdapter("cf_List_Pinpai", conn);
cmd.SelectCommand.CommandType =CommandType.StoredProcedure ;
cmd.SelectCommand.Parameters.Add("@manufacture_id",SqlDbType.Int);
cmd.SelectCommand.Parameters["@manufacture_id"].Value =manufacture_id;
//第一个Repeater控件结束 //第二个Repeater控件开始
SqlDataAdapter cmd1 = new SqlDataAdapter("cf_List_Chexi", conn);
cmd1.SelectCommand.CommandType =CommandType.StoredProcedure ;
cmd1.SelectCommand.Parameters.Add("@brand_id",SqlDbType.Int);
cmd1.SelectCommand.Parameters["@brand_id"].Value =?????; //这个输入参数怎么写?这里的数就是第一个记录集的brand_id,这里不知道怎么写?请哪位老大帮忙
//第二个Repeater控件开始
conn.Open(); DataSet ds = new DataSet();
cmd.Fill(ds, "pic");
DataTable dt=ds.Tables["pic"]; r1.DataSource=dt.DefaultView;
r1.DataBind(); cmd.Dispose();
conn.Close();
}
前台:
<asp:datalist id="DataList1" runat="server" Width="545" RepeatDirection="Horizontal" RepeatColumns="2"
DataKeyField="classid" OnItemDataBound="BoundData" HorizontalAlign="Center">
<ItemTemplate>
<table cellpadding="0" cellspacing="1" border="0" bgcolor="#cccccc">
<tr>
<td bgcolor="#ffffff"><%# DataBinder.Eval(Container.DataItem, "classname") %></td>
</tr>
<tr>
<td bgcolor="#ffffff" width="255" height="150" valign="top">
<asp:DataGrid ID="DataGrid1" AutoGenerateColumns="False" ShowHeader="False" ShowFooter="False"
Border="0" EnableViewState=False Runat="server">
<Columns>
<asp:BoundColumn DataField="title"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
</td>
</tr>
<tr>
<td bgcolor="#ffffff" align="right"><a href='list.aspx?classid=<%# DataBinder.Eval(Container.DataItem,"classid")%>'>更多新闻...</a></td>
</tr>
</table>
<br>
</ItemTemplate>
</asp:datalist>
{
if(!IsPostBack)
{
getClassItem();
}
}
private void getClassItem()
{
string con=ConfigurationSettings.AppSettings["dsn"];
SqlConnection conn=new SqlConnection(con);
conn.Open();
SqlCommand comm=new SqlCommand("select * from db_fClass order by classid ",conn);
SqlDataReader rd;
rd=comm.ExecuteReader();
DataList1.DataSource=rd;
DataList1.DataBind();
rd.Close();
conn.Close();
} protected void BoundData(object sender,DataListItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
DataGrid dg=(DataGrid)e.Item.FindControl("DataGrid1");
string index=this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
string con=ConfigurationSettings.AppSettings["dsn"];
SqlConnection conn=new SqlConnection(con);
conn.Open();
SqlCommand comm=new SqlCommand("select top 4 * from db_Article where classid="+index,conn);
SqlDataReader rd;
rd=comm.ExecuteReader();
dg.DataSource=rd;
dg.DataBind();
rd.Close();
conn.Close();
}
}
1.还是先仔细看看http://support.microsoft.com/default.aspx?scid=kb;EN-US;306154 这个例子,是用ds.Relation关联两个数据集,然后分别绑定到两个Repeater,注意第二个数据集的数据要和第一个配套,不然会报错;
2.第二个不需要用参数,因为全部都读出来了;
3.然后页面上把Repeater2隐藏,点击Repeater1上面的按钮时,e.Item.FindControl("Repeater2").Visible=true,只会显示对应的Repeater2,其他的还是会隐藏的,再点击Visible=false可以收起来
这样也可以实现效果。
public void listPinPai()
{
int manufacture_id=Convert.ToInt32(Request["manufacture_id"]); SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
//第一个Repeater控件开始
SqlDataAdapter cmd = new SqlDataAdapter("cf_List_Pinpai", conn);
cmd.SelectCommand.CommandType =CommandType.StoredProcedure ;
cmd.SelectCommand.Parameters.Add("@manufacture_id",SqlDbType.Int);
cmd.SelectCommand.Parameters["@manufacture_id"].Value =manufacture_id;
//第一个Repeater控件结束 conn.Open(); DataSet ds = new DataSet();
cmd.Fill(ds, "brand"); r1.DataSource = ds.Tables["brand"];
r1.DataBind();
cmd.Dispose();
conn.Close(); }protected void BoundData(object sender,RepeaterItemEventArgs e)
{ if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
Repeater r3=(Repeater)e.Item.FindControl("r2");
string brand_id=this.r1.DataKeys[e.Item.ItemIndex].ToString(); //这行错了,请哪位老大帮外修改一下,谢谢
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
SqlDataAdapter cmd = new SqlDataAdapter("cf_List_Chexi", conn);
cmd.SelectCommand.CommandType =CommandType.StoredProcedure ;
cmd.SelectCommand.Parameters.Add("@brand_id",SqlDbType.NVarChar,30);
cmd.SelectCommand.Parameters["@brand_id"].Value =brand_id; conn.Open(); DataSet ds = new DataSet();
cmd.Fill(ds, "chexi")
r3.DataSource=ds.Tables["chexi"];
r3.DataBind();
cmd.Dispose();
conn.Close();
}
}
把值放在隐藏的控件里
<ItemTemplate>
<asp:TextBox ID=txtBox Runat=server Visible=False Text='<%# DataBinder.Eval(Container.DataItem, "classid") %>'> </asp:TextBox>
....
取参数
TextBox txtClassid=(TextBox)e.Item.FindControl("txtBox");
string index=txtClassid.Text;
<itemtemplate>
<a href=cartype.aspx?cartype_id=<%# DataBinder.Eval(Container.DataItem, "[\"cartype_id\"]")%>><%# DataBinder.Eval(Container.DataItem, "[\"cartypename\"]")%></a </itemtemplate>
</asp:DataList>
<asp:DataList Runat=server ID="d1" RepeatColumns=2 ItemStyle-Width="267" ItemStyle-Height=22 ItemStyle-HorizontalAlign=Left >有点问题,为什么ItemStyle-Width的值只能是数字,用百分比就不行了 ItemStyle-Width="50%"
只能用ItemStyle-Width="267" 真不明白