none
问一个关于DetailsView控件生成的HTML的问题 RRS feed

  • 问题


  • 用DetailsView如何生成想下面这样的HTML

    <table>
    <tr><th>名称</th><td>fff</td></tr>
    <tr><th>国别</th><td>ffff</td></tr>
    <tr><th>备注</th><td>师傅的萨菲的</td></tr>
    </table>

    我是这样写的
                                     <asp:DetailsView DataKeyNames="id" AutoGenerateRows="false" DataSourceID="PurveySqlDataSource"   ID="DetailsView1" runat="server">
                                     <Fields>
                                       <asp:BoundField DataField="name" HeaderText="名称" />
                                       <asp:BoundField DataField="address" HeaderText="国别" />
                                       <asp:BoundField DataField="brief" HeaderText="备注" />
                                     </Fields>
                                     </asp:DetailsView>

    生成的HTML是这样的由于生成了很多不必要的标记导致样式都乱了

      <div>
        <table cellspacing="0" rules="all" border="1" id="ctl00_ContentPlaceHolder1_DetailsView1" style="border-collapse:collapse;">

            <tr>
                <td>名称</td><td>顶尖艺术品供货商</td>
            </tr><tr>
                <td>国别</td><td>荷兰</td>
            </tr><tr>
                <td>备注</td><td>免费供应大量顶尖艺术品</td>

            </tr>
        </table>
    </div>

    2009年8月24日 3:30

答案

  • 真的很不理解,这样的话 结构 表现 行为 混合在一起岂不是很混乱。样式,他们前端开发人员都会去做兼容的。

    .net程序员不是都会去搞兼容性的 也不都是团队开发 控件为了用来提高开发效率的 你可以选择不用控件 用html+输出数据做
    我觉得mvc可能满足你的需求
    2009年8月24日 4:45

全部回复

  • 你好! 你可以选择用自定义表格布局 +<%=输出数据>方式

    2009年8月24日 3:55
  • 你好,可以使用模板。
        <asp:DetailsView>
            <Fields>
                <asp:TemplateField>
                    <table>
                        <tr>
                            <th>名称</th>
                            <td>fff</td>
                        </tr>
                        <tr>
                            <th>国别</th>
                            <td>ffff</td>
                        </tr>
                        <tr>
                            <th>备注</th>
                            <td>师傅的萨菲的</td>
                        </tr>
                    </table>
                </asp:TemplateField>
            </Fields>
        </asp:DetailsView>
    jon.valett@gmail.com
    2009年8月24日 3:56
    版主
  • 你好,可以使用模板。
        <asp:DetailsView>
            <Fields>
                <asp:TemplateField>
                    <table>
                        <tr>
                            <th>名称</th>
                            <td>fff</td>
                        </tr>
                        <tr>
                            <th>国别</th>
                            <td>ffff</td>
                        </tr>
                        <tr>
                            <th>备注</th>
                            <td>师傅的萨菲的</td>
                        </tr>
                    </table>
                </asp:TemplateField>
            </Fields>
        </asp:DetailsView>
    jon.valett@gmail.com
    谢谢了,请问table中的cellspacing="0" rules="all" border="1" style="border-collapse:collapse;" 这几个属性应该怎么去掉
    2009年8月24日 4:04
  • 你好,可以使用模板。
        <asp:DetailsView>
            <Fields>
                <asp:TemplateField>
                    <table>
                        <tr>
                            <th>名称</th>
                            <td>fff</td>
                        </tr>
                        <tr>
                            <th>国别</th>
                            <td>ffff</td>
                        </tr>
                        <tr>
                            <th>备注</th>
                            <td>师傅的萨菲的</td>
                        </tr>
                    </table>
                </asp:TemplateField>
            </Fields>
        </asp:DetailsView>
    jon.valett@gmail.com
    谢谢了,请问table中的cellspacing="0" rules="all" border="1" style="border-collapse:collapse;" 这几个属性应该怎么去掉

    那只有重写这个控件的方法了
    2009年8月24日 4:06
  • 你好,要去掉可以重写一个继承DetailsView的控件,并重写输出。

    jon.valett@gmail.com
    2009年8月24日 4:08
    版主
  • 那样的话在开发过程中岂不是好多服务器控件都需要重写输出了吗?因为他们许多都会都生成没有用HTML标记,和一些表现性的属性
    2009年8月24日 4:11
  • 那样的话在开发过程中岂不是好多服务器控件都需要重写输出了吗?因为他们许多都会都生成没有用HTML标记,和一些表现性的属性

    跟浏览器有关 微软为了有些控件显示露出表格边框 觉得难看 所以默认加了样式 有很多人建议加这些 也有很多不建议 
    2009年8月24日 4:14
  • 那样的话在开发过程中岂不是好多服务器控件都需要重写输出了吗?因为他们许多都会都生成没有用HTML标记,和一些表现性的属性
    你好,其实并非没有用,每个浏览器的默认样式都不一样,微软生成默认标记,是为了样式在各个浏览器中保持一致。同时,目前这些默认属性还没有办法通过前端设置来实现删除,只能通过继承来完成。

    jon.valett@gmail.com
    2009年8月24日 4:19
    版主
  • 真的很不理解,这样的话 结构 表现 行为 混合在一起岂不是很混乱。样式,他们前端开发人员都会去做兼容的。
    2009年8月24日 4:40
  • 真的很不理解,这样的话 结构 表现 行为 混合在一起岂不是很混乱。样式,他们前端开发人员都会去做兼容的。

    .net程序员不是都会去搞兼容性的 也不都是团队开发 控件为了用来提高开发效率的 你可以选择不用控件 用html+输出数据做
    我觉得mvc可能满足你的需求
    2009年8月24日 4:45