1

net gridview,当它被渲染时,它似乎位于渲染表中,并且标签没有 ID 或 Class。

这个 div 标签阻止我使用我的 CSS 将 gridview 定位到我想要的位置。有没有办法给它 div 一个 ID 或 Class 以便我可以定位它?

屏幕下方显示了 IE 开发工具中呈现的 html

在此处输入图像描述

下面是 ASP.net 部分

<div class="clObjectTitleBanner">
    <asp:GridView
        ID="gvCurrentStageCircsPSTN"
        runat="server"
        EnableViewState="true"
        GridLines="Both"
        CssClass="gvCircsPSTNDash">
    </asp:GridView>
</div>
4

3 回答 3

3

您可以使用选择器在 CSS 中定位此 div .clObjectTitlebanner > div

如果您真的想自定义控件 HTML,可以使用ASP.NET Control Adapters来实现。

于 2013-09-06T10:27:49.727 回答
3

您可以使用 jQuery 动态分配 id;

$(document).ready(function(){

      $('#MainContent_gvCurrentStageCircsPSTN').closest('div').attr('id','parent_div');

});

您可以在 css 中访问它:

#parent_div{
background:#DDD;

}
于 2013-09-06T16:27:36.370 回答
2

似乎解决方案是<div>从 HTML 中获取相应的标签并将其替换为:

string html;
html.Replace("<div>", "<div id="+"\"myID\""+">");

或者,如果您对 gridview的CssClass属性没问题,则完全删除该标签。但是,您也必须小心删除相应的</div>标签。

string html;
html.Replace("<div>", "");

因此,您首先需要获取页面的完整 HTML。您可以通过覆盖 Render()方法来做到这一点,类似于:

protected override void Render(HtmlTextWriter writer)
{
       StringBuilder sbOut = new StringBuilder();
        StringWriter swOut = new StringWriter(sbOut);
        HtmlTextWriter htwOut = new HtmlTextWriter(swOut);
        base.Render(htwOut);
        string html = sbOut.ToString();
}

但是,您现在确实需要研究如何获得所需的确切<div>标签的逻辑。(它在开发一个小型实用程序时对我有用,因为我根本没有放置任何其他<div>标签)。检查这个:在没有 ViewState ASP.Net 的情况下获取当前页面的 HTMLhttp ://forums.asp.net/t/1394050.aspx

我希望至少你能明白。

于 2013-09-06T15:48:11.030 回答