打印本文 打印本文 关闭窗口 关闭窗口
有滚动条、固定Header的ASP.Net DataGrid实现
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3602  更新时间:2009/4/23 10:43:52  文章录入:mintao  责任编辑:mintao
nbsp;       //so that it is on the top. Z-INDEX is more complex here.

        //Set Height to 0, so that it will adjust on its own.

        Height = new Unit("0px");

        StringWriter sw = new StringWriter();

        HtmlTextWriter htw = new HtmlTextWriter(sw);

        //This style is important for matching column widths later.

        Style["TABLE-LAYOUT"] = "fixed";

        base.Render(htw);

        StringBuilder sbRenderedTable = sw.GetStringBuilder();

        htw.Close();

        sw.Close();

        Debug.Assert((sbRenderedTable.Length > 0),

          "Rendered HTML string is empty. Check viewstate usage and databinding.");

        string temp = sbRenderedTable.ToString();

        if (sbRenderedTable.Length > 0)

        {

          //AllowPaging at the top?

          if ((AllowPaging) && ((PagerPosition.Top == PagerStyle.Position || (PagerPosition.TopAndBottom == PagerStyle.Position))))

          {

            Trace.WriteLine(temp);

            sbRenderedTable.Replace(ID,ID + "_Pager", 0, (temp.IndexOf(ID) + ID.Length));

            temp = sbRenderedTable.ToString();

            string pager = temp.Substring(0, temp.ToLower().IndexOf(@"</tr>") + 5);

            Trace.WriteLine(pager);

            output.Write(pager);

            output.WriteEndTag("table");

            //Start of pager''''s <tr>

            int start = temp.ToLower().IndexOf(@"<tr");

            //End of pager''''s </tr>

            int end = temp.ToLower().IndexOf(@"</tr>") + 5;

            //Remove the <tr> for pager from the string. Prepare to render the headers.

            sbRenderedTable.Remove(start,end-start);

            Trace.WriteLine(sbRenderedTable.ToString());

            sbRenderedTable.Replace(ID + "_Pager",ID + "_Headers", 0, (temp.IndexOf(ID+"_Pager") + (ID+"_Pager").Length));

            temp = sbRenderedTable.ToString();

            string tableHeaders = temp.Substring(0, (temp.ToLower()).IndexOf(@"</tr>") + 5);

            Trace.WriteLine(tableHeaders);

            output.Write(tableHeaders);

            output.WriteEndTag("table");

            string headerID = ID + "_Headers";

            string pagerID = ID + "_Pager";

            string divID = ID + "_div";

            string adjustWidthScript = @"

                                                <script language=javascript>

                                                        //debugger;

                                                        var headerTableRow = " + headerID + @".rows[0];

                                                        var originalTableRow = " + ID + @".rows[1];"

上一页  [1] [2] [3] [4] [5]  下一页

打印本文 打印本文 关闭窗口 关闭窗口