自定控件绑定数据问题

chongchonglovenet chongchonglovenet 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我写了个自定义控件,是用来显示产品和图片属性的,代码和标签都没问题,大家可以不仔细看,但是还是贴出来以便大家帮我解决一下我下面要提到的问题,我绑定显示也都出来了,但是我发现,如果我是再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; }
}
...全文
评论
收藏 已收藏
分享
返回顶部
chongchonglovenet
.NET社区 62,272 成员 668,968 内容