在DataGrid模板列中我放了一个继承自DropDwonList自定义控件,这个控件有一个公共ID属性,通过这个ID来获取DropDwonList要显示的数据。代码是这样的:.aspx是这样的
<asp:TemplateColumn HeaderText="所属栏目">
<ItemTemplate>
<cc1:NewsCategory id="NewsCategory1" NewsID ='<%# DataBinder.Eval(Container.DataItem,"f_NewsID")%>' runat="server">
</cc1:NewsCategory>
</ItemTemplate>
</asp:TemplateColumn>控件代码:
[
ParseChildren(true)
]
public class NewsCategory : DropDownList
{
private int newsID; public NewsCategory()
{
this.AutoPostBack = true;
LangCheng.CommonModules.NewsManagerBusiness.News news = new News();
DataSet ds;
ds = news.GetCategoryByNewsID(newsID);
this.DataSource = ds;
this.DataTextField = "f_Name";
this.DataValueField = "f_CategoryID";
this.DataBind();
} public int NewsID
{
set { newsID = value ;}
}
}问题是
newsID在这里set { newsID = value ;} 已经传入,但却无法输给newsID
所以ds = news.GetCategoryByNewsID(newsID);的newsID始中为“0”,
在页面中也显示不出来!如果我这样ds = news.GetCategoryByNewsID(10);
则页面中的DropDwonList可以正常显示为什么在set { newsID = value ;} 中value的值不能输给newsID呢??
请求高人指点
谢谢!
<asp:TemplateColumn HeaderText="所属栏目">
<ItemTemplate>
<cc1:NewsCategory id="NewsCategory1" NewsID ='<%# DataBinder.Eval(Container.DataItem,"f_NewsID")%>' runat="server">
</cc1:NewsCategory>
</ItemTemplate>
</asp:TemplateColumn>控件代码:
[
ParseChildren(true)
]
public class NewsCategory : DropDownList
{
private int newsID; public NewsCategory()
{
this.AutoPostBack = true;
LangCheng.CommonModules.NewsManagerBusiness.News news = new News();
DataSet ds;
ds = news.GetCategoryByNewsID(newsID);
this.DataSource = ds;
this.DataTextField = "f_Name";
this.DataValueField = "f_CategoryID";
this.DataBind();
} public int NewsID
{
set { newsID = value ;}
}
}问题是
newsID在这里set { newsID = value ;} 已经传入,但却无法输给newsID
所以ds = news.GetCategoryByNewsID(newsID);的newsID始中为“0”,
在页面中也显示不出来!如果我这样ds = news.GetCategoryByNewsID(10);
则页面中的DropDwonList可以正常显示为什么在set { newsID = value ;} 中value的值不能输给newsID呢??
请求高人指点
谢谢!
{
this.newsID=newsID;
this.AutoPostBack = true;
LangCheng.CommonModules.NewsManagerBusiness.News news = new News();
DataSet ds;
ds = news.GetCategoryByNewsID(newsID);
this.DataSource = ds;
this.DataTextField = "f_Name";
this.DataValueField = "f_CategoryID";
this.DataBind();
}
上面那个this.newsID=newsID其它也没什么用,因为你没有获取这个字段值的属性,所以去掉也可以
3颗星也不过如此...
想当年..咳~~
张狂了些,Sorry,Sorry...
最差你写个OnInit的override函数,也比写在构造函数中强啊
另外啊,如果你不想每次刷新页面都要对你这个控件联系赋值的话,建议你写成这样
public int NewsID
{
set { ViewState["NewsID"] = value ;}
get{ if(ViewState["NewsID"]!=null)
return (int)ViewState["NewsID"];
return 0;
}
}
先注册吧!2个月后新版应该能出来了:(
最近真的很忙...