自定控件绑定数据问题

chongchonglovenet 2011-09-08 10:33:45
我写了个自定义控件,是用来显示产品和图片属性的,代码和标签都没问题,大家可以不仔细看,但是还是贴出来以便大家帮我解决一下我下面要提到的问题,我绑定显示也都出来了,但是我发现,如果我是再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; }
}
...全文
26 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧