DataList1中的嵌套一个DataList2.通过DataList1的ItemDataBound事件中查找DataList2控件,给DataList2设置数据源,绑定数据.
在DataList2中的ItemDataBound事件中手动的绑定.现在有个问题是,我在DataList2中有个按钮.CommandName="Add",
private void DataList2_ItemCommand(object source, DataListCommandEventArgs e) 就是不能执行,为什么?
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
DataRow dr=ds.Tables["Types"].Rows[e.Item.ItemIndex];

DataList DataList2 = (DataList)e.Item.FindControl("DataList2");
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@TypeId",SqlDbType.Int)
};
paras[0].Value=dr["RecId"];
ds=conn.ExecuteProc("Products_SelectForTypeId",paras,"Products");
DataList2.DataSource=ds.Tables["Products"].DefaultView; //绑定事件可以正常.
DataList2.ItemDataBound+=new DataListItemEventHandler(DataList2_ItemDataBound);
//DataList2.ItemCommand事件不能执行,为什么?如何解决?
DataList2.ItemCommand+=new DataListCommandEventHandler(DataList2_ItemCommand);
DataList2.DataBind();
ds.Tables.Remove("Products");
}
}
private void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
DataRow dr=ds.Tables["Products"].Rows[e.Item.ItemIndex];
Literal lbSmallImage=(Literal)e.Item.FindControl("lbSmallImage");
lbSmallImage.Text="<a href='ProductShow.aspx?RecId="+dr["RecId"].ToString()+"'><img src='../images/Products/"
+dr["BigImage_Save"].ToString()+"' border=0 height=75 width=75></a><br>"; Literal lbName=(Literal)e.Item.FindControl("lbName");
lbName.Text=dr["Name"].ToString(); Literal lbSCPrice=(Literal)e.Item.FindControl("lbSCPrice");
lbSCPrice.Text=dr["SCPrice"].ToString(); Literal lbSDPrice=(Literal)e.Item.FindControl("lbSDPrice");
lbSDPrice.Text=dr["SDPrice"].ToString(); Literal lbCJPrice=(Literal)e.Item.FindControl("lbCJPrice");
lbCJPrice.Text=dr["CJPrice"].ToString(); HyperLink hlXQ=(HyperLink)e.Item.FindControl("hlXQ");
hlXQ.NavigateUrl="ProductShow.aspx?RecId="+dr["RecId"].ToString(); HyperLink hlLB=(HyperLink)e.Item.FindControl("hlLB");
hlLB.NavigateUrl="ProductsListShow.aspx?TypeId="+dr["TypeId"].ToString();
}
}private void DataList2_ItemCommand(object source, DataListCommandEventArgs e)
{
Response.Write("aaaaaaaaaaaaaaaaaaaaa");
}

解决方案 »

  1.   

    给它加一个事件委托吧
    AddHandler CType(dgListArticle.Items(i).Cells(5).FindControl("DropDownList1"), DropDownList).SelectedIndexChanged, AddressOf Selectchange
      

  2.   

    你在aspx文件里写一个事件绑定<asp:DataList id="DataList2" runat="server" OnItemDataBound="DataList2_ItemDataBound"></asp:DataList>.cs文件里就直接
    private void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
    {
    }
      

  3.   

    private void TitleList_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    DataTable dt = da.Clone ();
    DataRow[] arrdr = da.Select ("b_class='" + ((Literal)e.Item.FindControl ("title")).Text + "'");
    for (int i=0;i<arrdr.Length;i++)
    {
    dt.ImportRow (arrdr[i]);
    } Control c = e.Item.FindControl ("InfoList");
    if (c != null)
    {
    ((Repeater)c).DataSource = dt;
    ((Repeater)c).DataBind ();
    }
    }
    }
      

  4.   

    我晕死哦.各位大哥们,请看看我的程序....嵌套的DataList2的DataList2_ItemDataBound事情里面的代码可以运行,也就是说DataList2里要绑定的数据可以绑定,但就是DataList2里的一个模版列中包含的一个按钮的单击事件不知道怎么获取,然后执行代码
    请帮忙哦
      

  5.   

    请参考http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbcon/html/vbtskrespondingtobuttoneventsindatalistitems.asp
      

  6.   

    请参考
    http://community.csdn.net/Expert/topic/3600/3600123.xml?temp=.9944727里面思归老大的回答 请注意object的使用 也许能给你点启发