当前位置:编程学习 > C#/ASP.NET >>

自定控件绑定数据问题

我写了个自定义控件,是用来显示产品和图片属性的,代码和标签都没问题,大家可以不仔细看,但是还是贴出来以便大家帮我解决一下我下面要提到的问题,我绑定显示也都出来了,但是我发现,如果我是再datalist的ItemCommand事件里面做对某行的操作的时候,因其要判断一系列条件,所以在我条件不符合的时候,我会显示提示信息,并且加个return,如:if(……){showmessage(msg);return;}这个时候,当执行返回后,我之前的产品和id号都未null了,如果成功我会执行重新加载页面的代码,产品和id号可以显示,所以调试看了一下,确定是return后,我控件代码的属性id和productname为null,所以就没有值了,后面想了个办法,搞了个viewstate变量来存值id值,可以倒是可以,但是这样我每个属性都要搞个viewstate对象就他麻烦了,
标签如下: <Hi:ProductDetailsLink ProductId='<%# Eval("ProductId")%>' ProductName='<%# Eval("Name")%>' runat="server" />
cs代码如下:
 public class ProductDetailsLink : HyperLink
    {
        public const string TagID = "ProductDetailsLink";

        public ProductDetailsLink()
        {
            base.ID = ProductDetailsLink.TagID;
        }

        protected override void Render(HtmlTextWriter writer)
        {
           
            if (ProductId != null && ProductId != DBNull.Value)
            {
                if(isGroupBuyProduct)
                {
                    base.NavigateUrl = Globals.GetSiteUrls().UrlData.FormatUrl("groupBuyProductDetails", ProductId);
                }
                else if (IsCountDownProduct)
                {
                    base.NavigateUrl = Globals.GetSiteUrls().UrlData.FormatUrl("countdownProductsDetails", ProductId);
                }
                else if (isUn)
                {
                    base.NavigateUrl = Globals.GetSiteUrls().UrlData.FormatUrl("unproductdetails", ProductId);
                }
                else
                {

                    base.NavigateUrl = Globals.GetSiteUrls().UrlData.FormatUrl("productDetails", ProductId);
                }

            }

            if (!imageLink && ProductId != null && ProductId != DBNull.Value)
            {
                if (StringLenth.HasValue && ProductName.ToString().Length > StringLenth.Value)
                    base.Text = ProductName.ToString().Substring(0, StringLenth.Value) + "...";
                else
                    base.Text = ProductName.ToString();
            }

            base.Target = "_blank";

            base.Render(writer);
        }

        private bool isUn = false;
        public bool IsUn {
            get { return isUn; }
            set { isUn = value; }
        }

        private bool imageLink = false;
        public bool ImageLink
        {
            get { return imageLink; }
            set { imageLink = value; }
        }

        public bool isGroupBuyProduct = false;

        public bool IsGroupBuyProduct
        {
            get { return isGroupBuyProduct; }
            set { isGroupBuyProduct = value; }
        }

        private bool isCountDownProduct = false;
        public bool IsCountDownProduct
        {
            get { return isCountDownProduct; }
            set { isCountDownProduct = value; }
        }

        public object ProductName 
        {
            set
            {
                productname = value;
            }
            get
            {
                return productname;
            }
        }
       

        public object ProductId
        {
          这段是我后面改的,可以取到id值,原本是{get;set;}
           get
            {
                if (ViewState["ProductId"] == null)
                    return null;

                return ViewState["ProductId"];
            }
            set
            {
                ViewState["ProductId"] = value;
            }
         }

        public int? StringLenth { get; set; }
    }
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,