哪位大哥帮我解决下:以前我的贴:http://community.csdn.net/Expert/topic/5574/5574417.xml?temp=.4164392这贴子中的private void d_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
HyperLink h;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
h = (HyperLink)e.Item.FindControl("h1");
if (h != null)
{
h.Text = ((DataRowView)e.Item.DataItem).Row["au_id"].ToString();
h.NavigateUrl = "Msg.aspx?id=" + h.Text;
}
}
}现在我想把private void d_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)改成private void d_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e,string strHtml)即由两个参数,改成三个参数,有没办法改,都要改哪里?
谢谢

解决方案 »

  1.   

    你要重新定义一个ItemDataBound事件的委托。还要重写OnItemDataBound方法。如:public delegate void MyItemDataBoundEventHandler(object sender,DataListItemEventArgs e,string strHtml)new public event MyItemDataBoundEventHandler ItemDataBound;protected override OnItemDataBound(DataListItemEventArgs e)
    {
        if(ItemDataBound!=null)
    {
    ItemDataBound(this,e,"strHtml");
    }
    }
      

  2.   

    就是让OnItemDataBound引发自己定义的ItemDataBound事件,建议这里不要和系统定义的一样。我这里只是做实验,所以这样弄了!
      

  3.   

    谢谢,问题解决,用wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴)的那样即可,不过要注意要改一点,下面我把完整的贴一下,以便大家参考public class MyDataList : DataList
    {
       public  string strHtml;
        public delegate void MyItemDataBoundEventHandler(object sender, DataListItemEventArgs e, string  strHtml);    new public event MyItemDataBoundEventHandler ItemDataBound;
        protected override void OnItemDataBound(DataListItemEventArgs e)
        {
            if (ItemDataBound != null)
            {
                ItemDataBound(this, e, strHtml);
            }
        }
    }贴子我先结了.
      

  4.   

    做项目一般不用datalist。原始的repeater...