小D做了一个网站,里面用到了Webpart,可是webpartzone 和webpartzone之间的间隔无法消除,导致页面总是有一段间隔..不知道有没有描述清楚贴一个问题的示例代码,还请大家参谋参谋.<asp:WebPartZone ID="WebPartZone1" runat="server" Padding="0" PartChromeType="None" >    <ZoneTemplate>
                 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
             </ZoneTemplate>
         </asp:WebPartZone>
        <asp:WebPartZone ID="WebPartZone2" runat="server" Padding="0" PartChromeType="None" >
            <ZoneTemplate>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            </ZoneTemplate>
        </asp:WebPartZone>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>其中textbox1和textbox2之间的间距要比textbox3和textbox4之间的间距大很多...原因小弟猜测是因为webpartzone将textbox封装成generic webpart,放在其中显示的时候,添加了一个宽度,导致的...可是不知道怎么消除这个空白,..跪谢~~~~

解决方案 »

  1.   

    webpart就是特意突出这个间隔的,否则用户就很那意识到webpart的存在,在无意之间拖动控件组的时候会感到不舒服。
      

  2.   

    sorry,应该说是webpartzone而不是webpart。webpartzone中的“cellpadding=2”是写死的,并且此方法是protected的无法重写。你可以自定义控件组合它,通过RenderControl获得它的html然后修改文本,不过我觉得这似乎没有必要。原因如上。
      

  3.   

    另外,webpartzone之间并没有间隔,而是webpartzone内部有一个边。RenderControl例子:WebPartZone  w = new WebPartZone ();
    w.TemplateControl = new TM();
    StringBuilder  o=new StringBuilder();
    StringWriter wo=new StringWriter(o);
    HtmlTextWriter h = new HtmlTextWriter(wo);
    w.RenderControl(h);最后输出:<table cellspacing="0" cellpadding="0" border="0">
    <tr>
    <td style="height:100%;"><table cellspacing="0" cellpadding="2" border="0" style="width:100%;height:100%;">
    <tr>
    <td style="height:100%;"></td>
    </tr>
    </table></td>
    </tr>
    </table>
      

  4.   

    w.TemplateControl = new TM();那一行没有!
      

  5.   

    那这太不合理,应该算是设计上面的一个bug...无法控制cellpadding可能也就是你说的那种为了突出显示webpart...可是,我就是想把那个间隔去掉...有没有更好的解决办法呢?比如在哪里设置一下可以改变这个cellpadding=2的这个属性..重写是不大可能的,因为我是写了一个usercontrol,然后把他放倒webpartzone里面...