自定控件绑定数据问题
我写了个自定义控件,是用来显示产品和图片属性的,代码和标签都没问题,大家可以不仔细看,但是还是贴出来以便大家帮我解决一下我下面要提到的问题,我绑定显示也都出来了,但是我发现,如果我是再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