是重写!就是把用户控件的Html代码中的一部分改写!该如何做?

解决方案 »

  1.   

    需要重载它的render方法,先调用base.render写到一个流或者字符串中,然后做你的修改,然后再写到response里。
      

  2.   

    我的想法是,用户控件中放置一个DataGrid,不允许自动创建列,然后这样的话最开始是没有列的,我在第一次绑定DataSet时由程序手动添加列,然后我想保存这些添加的列(当调用这个用户控件的页面回发时会重置用户控件,导致控件里的DataGrid没有列),希望能够使手动创建的列能在控件重载时写入。
    发现DataGrid会缓存DataGridBound,如果我只单单保存列名和对应字段的话,如果在代码中手动加列的话肯定要先clear原来的列,这样原来DataGrid自动保存的数据(实际应该就是我clear的DataGridColumn)就没了,所以我要是只改动Html代码的话应该不会被clear吧?
    比如原来没有
    <Columns></Columns>
    绑定DataSet后,当回发时(注意是调用该用户控件的页面,不是控件本身页面回发)我只在Html里添加
    <Columns>
    <asp:BoundColumn DataField="a" HeaderText="简称"></asp:BoundColumn>
    <asp:BoundColumn DataField="b" HeaderText="代号"></asp:BoundColumn>
    </Columns>
    当然,要添加什么样的BoundColumn由绑定DataSet时获取并保存(视图)
      

  3.   

    To  athossmth(athos):
    base.render是指把该控件的原始Html代码载入吗?然后我再对它改动,之后又写回控件吗?有个问题,如果一个页面上调用了两个这样的控件,我的改写会产生混乱吗?
      

  4.   

    override render方法里还能写这个?<asp:BoundColumn DataField="a" HeaderText="简称"></asp:BoundColumn>
    <asp:BoundColumn DataField="b" HeaderText="代号"></asp:BoundColumn>Response到客户端了  浏览器怎么解释上面2行代码?应该不行