【问题标题】:Is this a bug or a complex coding solution with GridView formatting in edit mode?这是在编辑模式下使用 GridView 格式的错误还是复杂的编码解决方案?
【发布时间】:2026-02-10 23:20:03
【问题描述】:

我正在尝试确定我看到的内容是否可以通过代码解决,或者是否是 GridView 中的错误(使用 Visual Studio 2012 Preimum/SQL Server 2012 - 使用 .NET 4.5 (4.0在代码中使用))。使用 Microsoft 的 AdventureWorks2012 获取 dB 信息。

我有一个 GridView,它位于面板内部(SQL 数据是可靠的,可以按我的意愿工作),它有一个 Frozen Header(包含数据库中的所有列名)。当页面加载时,一切都按照我的意愿行事。但是,当我进入编辑模式时,我在非编辑模式下设置的格式消失了,并且保存 GridView 的面板不会伸展以填充/显示整个数据并切掉网格视图的很大一部分。

我还应该注意,冻结窗格仍然正常运行。但是,由于 GridView 的部分在编辑模式下被切断,这违背了 1) GridView 和 2) 冻结窗格的目的。我昨天花了大部分时间试图弄清楚如何将编辑从初始页面加载应用到 GridView 编辑模式。我不应该这样做,但这是需要做的事情。我一直在查看 OnRowEditing 方法作为可能的答案,以及查看 GridView 和 Panel 的 ASP 选项。我什至查看了 CSS 以查看是否有解决方案,但我被难住了。

我希望完成的是,当 GridView 进入编辑模式时,当页面加载时我喜欢的格式保持一致。

这是我所看到的示例(请注意窗格中的 GridView 如何滑动):

是的,这是一个沙盒数据库,但我在实际代码中看到的是更多信息被截断而不是最后。

我正在努力学习这一点,所以关于这背后的理论的一些指示也会很棒。通过 OnRowEditing 方法,我是否走在正确的道路上?

代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="sample.aspx.cs" Inherits="sample" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="<path to>/jquery-2.0.3.min.js"></script>  
<script src="<path to>/jquery-2.0.3.js"></script> 
<style type="text/css">
.header-frozen
    {
        font-weight: bold;
        background-color: white;
        position: relative;
        visibility: visible;
    }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>


<br />

<div>
    <asp:Panel ID="Panel1"  Height="600px" Width="4000px" ScrollBars="Vertical" runat="server">


<asp:GridView ID="GridView1"  runat="server" AllowSorting="True" AutoGenerateColumns="False"  DataKeyNames="BusinessEntityID" DataSourceID="SqlDataSource1"  ForeColor="#333333" GridLines="None">
    <HeaderStyle CssClass="GridViewHeaderStyle" />
    <AlternatingRowStyle BackColor="White" />
    <Columns>
        <asp:CommandField ShowEditButton="True" />
        <asp:BoundField DataField="BusinessEntityID" HeaderText="Business Entity ID" ReadOnly="True" SortExpression="BusinessEntityID" InsertVisible="False" ShowHeader="False" >

        </asp:BoundField>
        <asp:BoundField DataField="NationalIDNumber" HeaderText="National ID #" SortExpression="NationalIDNumber" ShowHeader="False" />
        <asp:BoundField DataField="LoginID" HeaderText="Login ID" SortExpression="LoginID" ShowHeader="False" />
        <asp:BoundField DataField="OrganizationNode" HeaderText="Organization Node" SortExpression="OrganizationNode" ShowHeader="False" />
        <asp:BoundField DataField="OrganizationLevel" HeaderText="Organization Level" SortExpression="OrganizationLevel" ShowHeader="False" />
        <asp:BoundField DataField="JobTitle" HeaderText="Job Title" SortExpression="JobTitle" ShowHeader="False" />
        <asp:BoundField DataField="MaritalStatus" HeaderText="Marital Status" SortExpression="MaritalStatus" ShowHeader="False" />
        <asp:BoundField DataField="HireDate" HeaderText="Hire Date" SortExpression="HireDate" ShowHeader="False" />






        <asp:BoundField DataField="SalariedFlag" HeaderText="Salaried Flag" SortExpression="SalariedFlag" ShowHeader="False" />



        <asp:BoundField DataField="VacationHours" HeaderText="Vacation Hours" SortExpression="VacationHours" InsertVisible="False" ReadOnly="True" ShowHeader="False" />



        <asp:BoundField DataField="CurrentFlag" HeaderText="Current Flag" SortExpression="CurrentFlag" ShowHeader="False" />
        <asp:BoundField DataField="rowguid" HeaderText="Row Guid" SortExpression="rowguid" ShowHeader="False" />
        <asp:BoundField DataField="ModifiedDate" HeaderText="Modified Date" SortExpression="ModifiedDate" ShowHeader="False" />

        <asp:CommandField ShowEditButton="True" />
    </Columns>
    <HeaderStyle CssClass="header-frozen" Height="60px" />
    <EditRowStyle BackColor="#2461BF" />
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#EFF3FB" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />

    <SortedAscendingCellStyle BackColor="#F5F7FB" />
    <SortedAscendingHeaderStyle BackColor="#6D95E1" />
    <SortedDescendingCellStyle BackColor="#E9EBEF" />
    <SortedDescendingHeaderStyle BackColor="#4870BE" />
    </asp:GridView>
      <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks2012ConnectionString %>" SelectCommand="SELECT [BusinessEntityID],[NationalIDNumber],[LoginID],[OrganizationNode],[OrganizationLevel],[JobTitle],[BirthDate],[MaritalStatus],[Gender],[HireDate],[SalariedFlag],[VacationHours],[SickLeaveHours],[CurrentFlag],[rowguid],[ModifiedDate] FROM [HumanResources].[Employee]" UpdateCommand="UPDATE [HumanResources].[Employee] SET SELECT [NationalIDNumber] = @NationalIDNumber,[LoginID] = @LoginID,[OrganizationNode] = @OrganizationNode,[OrganizationLevel] = @OrganizationLevel,[JobTitle] = @JobTitle,[BirthDate] = @BirthDate,[MaritalStatus] = @MaritalStatus,[Gender] = @Gender,[HireDate] = @HireDate,[SalariedFlag] = @SalariedFlag,[VacationHours] = @VacationHours,[SickLeaveHours] = @SickLeaveHours,[CurrentFlag] = @CurrentFlag,[rowguid] = @rowguid,[ModifiedDate] = @ModifiedDate WHERE [BusinessEntityID] = @BusinessEntityID">
<UpdateParameters>
        <asp:Parameter Name="NationalIDNumber" />
        <asp:Parameter Name="LoginID" />
        <asp:Parameter Name="OrganizationNode" />
        <asp:Parameter Name="OrganizationLevel" />
        <asp:Parameter Name="JobTitle" />
        <asp:Parameter Name="BirthDate" />
        <asp:Parameter Name="MaritalStatus" />
        <asp:Parameter Name="Gender" />
        <asp:Parameter Name="HireDate" />
        <asp:Parameter Name="SalariedFlag" />
        <asp:Parameter Name="VacationHours" />
        <asp:Parameter Name="SickLeaveHours" />
        <asp:Parameter Name="CurrentFlag" />
        <asp:Parameter Name="rowguid" />
        <asp:Parameter Name="ModifiedDate" />
        <asp:Parameter Name="BusinessEntityID" />
</UpdateParameters>
</asp:SqlDataSource>
</asp:Panel>
            </div>
          </div>
</div>
</form>
</body>
</html>

【问题讨论】:

  • 你用对了,不是编辑模式的问题,而是你用来冻结页眉的css的问题,请尝试更改它..
  • 尝试设置页眉行和网格行的宽度一样会起作用..

标签: c# asp.net css sql-server gridview


【解决方案1】:

我通过将面板的宽度增加到 9000 解决了这个问题,之后在编辑模式下一切似乎都适合/工作。

【讨论】: