快速业务通道

ASP.NET自定义控件 第八天 显示多个条目星级评分的列表控件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
bject dataItem) {   if (!string.IsNullOrEmpty(DataTextField))   {     string txt = Convert.ToString(DataBinder.GetPropertyValue (dataItem, DataTextField));     cell.Text = txt;   } } /// <summary> /// ???????????? /// </summary> /// <param name="cell"></param> /// <param name="dataItem"></param> private void BindValueCell(TableCell cell, object dataItem) {   Panel panCur = (Panel)cell.Controls[0].Controls[0];   object o = null;   if (!String.IsNullOrEmpty(DataValueField))     o = DataBinder.GetPropertyValue(dataItem, DataValueField);   else     return;   int score = Convert.ToInt32(o);   string width = score * 16 + "px";   panCur.Style.Add(HtmlTextWriterStyle.Width, width); } protected override void Render(HtmlTextWriter writer) {   PrepareControlForRender();   base.Render(writer); } public void PrepareControlForRender() {   if (Controls.Count != 1)     return;   Table t = (Table)Controls[0];   t.CopyBaseAttributes(this);   if (ControlStyleCreated)     t.ApplyStyle(ControlStyle);   t.Rows[0].Cells[0].MergeStyle(TitleStyle);   t.Rows[1].Cells[0].MergeStyle(SubTitleStyle);   // Apply style to the labels that render team names   for (int i = 2; i < Items.Count; i++)   {     // Style team labels     t.Rows[i].Cells[0].ApplyStyle(LabelStyle);   } }

3.10 在页面中声明并定义自定义控件,预览结果。

<cc:BarChart ID="bar" runat="server" Font-Size="12px" Title="????????">
<TitleTemplate>
<%# Container.Title %>
<small>(<%# DateTime.Now.ToString() %>)</small>
</TitleTemplate>
</cc:BarChart>

3.11 编写后置代码,预览结果:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
this.BindData();
}
private void BindData()
{
DataTable table = new DataTable();
DataColumn col = new DataColumn("Comment", typeof (string));
table.Columns.Add(col);
col = new DataColumn("Score", typeof(int));
table.Columns.Add(col);
Random ran=new Random();
for (int i = 0; i < 10; i++)
{
DataRow row = table.NewRow();
int num= ran.Next(0, 6);
row[0] = "数据 "+i+" , "+num+" 星";
row[1] = num;
table.Rows.Add(row);
}
table.AcceptChanges();
bar.DataSource = table;
bar.DataTextField = "Comment";
bar.DataValueField = "Score";
bar.DataBind();
}

4. 总结

复杂绑据绑定控件可以通过扩展CompositeDataBindControl类实现,该类有一 个特殊的CreateChildControls方法实现数据的绑定和恢复,在下一次任务里,我 们将尝试扩展DataList和GridView以实现自定义分页控件。

本系列文章配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号