xml的另类应用

4 篇文章 0 订阅

关于ListItem的下集

下面就是一个扩展的CheckBox

[DefaultProperty("Text")]
    [ToolboxData("<{0}:XCheckBox runat=/"server/" />")]
    
public class XCheckBox : CheckBox
    
{
        [Bindable(
true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(
true)]
        
public string Value
        
{
            
get
            
{
                String s = (String)ViewState["Value"];
                    // updated @07-05-13
                    
 return String.IsNullOrEmpty(s) ? "on" : s;
                //
return ((s == null) ? String.Empty : s);
            }
            
set
            
{
                
// 
将值存储在 ViewState 
                ViewState["Value"] = value;
            }
        }

        
protected override void RenderContents(HtmlTextWriter output)
        
{
            
base.RenderContents(output);
        }

        
protected override void AddAttributesToRender(HtmlTextWriter writer)
        
{
            
// 添加 value 属性标记(在客户端呈现),并设置对应 Value属性值(服务器端)
            writer.AddAttribute(HtmlTextWriterAttribute.Value, Value);
            
base.AddAttributesToRender(writer);
        }
    }

 

使用以上方法用重写来扩展控件,确能实现Attribute的值不丢失.

但我们也可以换个角度去处理这个问题,比如果最近很火的xml

实现.

 ListItem li = new ListItem();

                XmlDocument xd = new XmlDocument();

                xd.LoadXml("<data></data>");

                XmlElement xe = xd.CreateElement("detail");

                xe.SetAttribute("type", tnode.TreeNodeSrc);

                xe.SetAttribute("id", tnode.ID);

                xe.SetAttribute("name", tnode.Text);

                xd.DocumentElement.AppendChild(xe);

                li.Text = tnode.Text;

                li.Value = xd.InnerXml;       

                lstSelect.Items.Add(li);           

 

xml来作为参数传递,可以很好解决在以前传参时磁到的一些问题.

主程序更加的灵活,现在sql2005也有啦xml数据类型.

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值