解决panel里的gridview固定表头后表头超出panel的范围

解决方法:动态改变Panel的宽度

模板页:

<td valign="top" bgcolor="#FBFCFF" align="left" style="table-layout: fixed; height: 595px" id="tdmailContent">
      <asp:Panel ID="Panel2" runat="server" Style="overflow: auto; width: 100%; height: 595px;"
                    onscroll="ResetDivPosition();">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
      </asp:Panel>
  </td>

分页数据:

   <asp:Panel ID="Panel2" runat="server" Style="width: expression(tdmailContent.clientWidth-10);
                                overflow-x: scroll; display: block;">
                                <asp:GridView ID="grdFill" runat="server" AutoGenerateColumns="False" Width="180%"
                                    RowStyle-HorizontalAlign="Center" RowStyle-VerticalAlign="Middle" OnRowDataBound="grdFill_RowDataBound" OnRowCreated="grdFill_RowCreated">
                                    <RowStyle Wrap="False" />
                                    <Columns>
                                        <asp:TemplateField>
                                            <HeaderStyle Width="30px" />
                                            <ItemStyle HorizontalAlign="Center" Wrap="false" />
                                            <ItemTemplate>
                                                <%# Container.DataItemIndex + 1%>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblCost" runat="server" Text='<%#Eval("Cost") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlServiceLevel" runat="server" AppendDataBoundItems="True"
                                                    DataTextField="DValue" DataValueField="DKey"
                                                    AutoPostBack="false"  Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlNetworkZone" runat="server" 
                                                    AppendDataBoundItems="True" DataTextField="DValue" DataValueField="DKey" AutoPostBack="false"
                                                   Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="txtCPU" runat="server" Text='<%#Eval("CPU") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblRAM" runat="server" Text='<%#Eval("RAM") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlHDD" runat="server"  AppendDataBoundItems="True"
                                                    DataTextField="DValue" DataValueField="DKey" AutoPostBack="false"
                                                    Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlDiskC" runat="server" 
                                                    AppendDataBoundItems="True" DataTextField="DValue" DataValueField="DKey" AutoPostBack="false"
                                                     Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblDiskD" runat="server" Text='<%#Eval("DiskC") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblDiskE" runat="server" Text='<%#Eval("DiskE") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblHostName" runat="server" Text='<%#Eval("HostName") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlOSVersion" runat="server" 
                                                    AppendDataBoundItems="True" DataTextField="DValue" DataValueField="DKey" AutoPostBack="false"
                                                    Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlOSLanguage" runat="server" 
                                                    AppendDataBoundItems="True" DataTextField="DValue" DataValueField="DKey" AutoPostBack="false"
                                                    Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:DropDownList ID="ddlWinComponent" runat="server" 
                                                    AppendDataBoundItems="True" DataTextField="DValue" DataValueField="DKey" AutoPostBack="false"
                                                     Enabled="false">
                                                    <asp:ListItem></asp:ListItem>
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblOtherR" runat="server" Text='<%#Eval("OtherRequirements") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblServiceName" runat="server" Text='<%#Eval("ServiceName") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemStyle HorizontalAlign="Center" />
                                            <ItemTemplate>
                                                <asp:Label ID="lblServicePort" runat="server" Text='<%#Eval("ServicePort") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                    <HeaderStyle Height="10px" />
                                </asp:GridView>
                            </asp:Panel>
      protected void grdFill_RowCreated(object sender, GridViewRowEventArgs e)
        {
            switch (e.Row.RowType)
            {
                case DataControlRowType.Header:

                    TableCellCollection tcHeader = e.Row.Cells;
                    tcHeader.Clear();

                    //第一行表头
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[0].Attributes.Add("rowspan", "2");
                    tcHeader[0].Text = "Seq.";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[1].Attributes.Add("rowspan", "2");
                    tcHeader[1].Attributes.Add("Width", "6%");
                    tcHeader[1].Text = "Cost";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[2].Attributes.Add("rowspan", "2");
                    tcHeader[2].Text = "Service Level<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[3].Attributes.Add("rowspan", "2");
                    tcHeader[3].Text = "Network Zone<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[4].Attributes.Add("colspan", "3");
                    tcHeader[4].Text = "VM Configuration<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[5].Attributes.Add("colspan", "3");
                    tcHeader[5].Text = "HDD Partition";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[6].Attributes.Add("rowspan", "2");
                    tcHeader[6].Text = "Hostname<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[7].Attributes.Add("rowspan", "2");
                    tcHeader[7].Text = "OS Version<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[8].Attributes.Add("rowspan", "2");
                    tcHeader[8].Text = "OS Language<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[9].Attributes.Add("rowspan", "2");
                    tcHeader[9].Text = "Windows Component<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[10].Attributes.Add("rowspan", "2");
                    tcHeader[10].Text = "Other Requirements";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[11].Attributes.Add("colspan", "2");
                    tcHeader[11].Text = "DMZ Rule</th></tr><tr align=\"center\" style=\"color:Black;background-color:#C9D5FE;font-weight:bold;height:20px;\">";

                    //第二行表头
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[12].Text = "CPU";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[13].Text = "RAM";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[14].Text = "HDD";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[15].Text = "Disk C(System)<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[16].Text = "Disk D(GB)<span class='TitleRed'>*</span>";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[17].Text = "Disk E(GB)";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[18].Text = "Service Name";
                    tcHeader.Add(new TableHeaderCell());
                    tcHeader[19].Text = "Service Port";
                    break;
            }
        }
posted @ 2010-10-18 15:57  StarKong  阅读(538)  评论(0)    收藏  举报