2012-08-06 26 views
2

基本上,我需要帮助提高一个完整的gridviews页面的性能,以减少C#的数量和移动尽可能多的GridView设置到ASP代码(而不是数据本身,这是在运行时绑定,需要留在C#)。优化GridView

我对GridView控件比较陌生,需要帮助将设置移动到GridView中,因为此代码所在的页面将有大约8或9个表格。

这里是我的ASP代码:

<asp:GridView runat="server" ID="tblBasicProcessingTime" 
    Caption="Basic Processing Stats" ShowHeader="False"> 
</asp:GridView> 

而我的C#代码:

var longestTime = ReportData.OrderByDescending(x => x.TimeSpentProcessing).FirstOrDefault(); 
var averageTime = ReportData.Average(x => x.TimeSpentProcessing); 
var shortestTime = ReportData.OrderBy(x => x.TimeSpentProcessing).FirstOrDefault(); 

var table = new DataTable(); 

const string col1Name = "Header"; 
const string col2Name = "Data"; 

table.Columns.Add(col1Name); 
table.Columns.Add(col2Name); 

var row1 = table.NewRow(); 
row1[col1Name] = "Longest Processing Time"; 
row1[col2Name] = longestTime.TimeSpentProcessing; 
table.Rows.Add(row1); 

var row2 = table.NewRow(); 
row2[col1Name] = "Average Processing Time"; 
row2[col2Name] = averageTime; 
table.Rows.Add(row2); 

var row3 = table.NewRow(); 
row3[col1Name] = "Shortest Processing Time"; 
row3[col2Name] = shortestTime.TimeSpentProcessing; 
table.Rows.Add(row3); 

tblBasicProcessingTime.DataSource = table; 
tblBasicProcessingTime.DataBind(); 

在此先感谢。

+0

您可以使用GridView的''属性来定义列规范。设置'ShowHeader =“True”'并且只绑定1行到GridView。 – 2012-08-06 10:22:57

+0

如果我手动将列添加到ASP代码,然后尝试在C#中将数据绑定到它们,它会拒绝说数据绑定到的列不存在。我将如何解决这个问题? – 2012-08-06 11:36:47

+0

如果你已经指定了'',那么你的'DataTable表'对象必须有'LPT'列。那么它不会给出错误。 – 2012-08-07 04:52:30

回答

1
<asp:GridView 
      ID="gvList" 
      runat="server" 
      AutoGenerateColumns="False" 
      EnableModelValidation="True" 
      HeaderStyle-HorizontalAlign="Center" 
      Width="100%" 
      RowStyle-Height="25px" 
      HeaderStyle-CssClass="ui-th-div-ie" 
      RowStyle-CssClass="TR_ROW1" 
      AlternatingRowStyle-CssClass="TR_ROW2" 
      HeaderStyle-ForeColor="#0073ea" 
      BorderWidth="1px" 
      CellPadding="2" 
      HorizontalAlign="Center" 
      OnPageIndexChanging="gvList_PageIndexChanging" 
      AllowPaging="true" 
      AllowSorting="true" 
      PagerStyle-HorizontalAlign="Right" 
      PageSize="1" 
      OnSorting="gvList_Sorting"> 

      <Columns> 
       <asp:TemplateField HeaderStyle-Width="20%" HeaderText="<%$ Resources: CommonResources, lbl_InstoreHistLotNo.Text %>" SortExpression="LotNo"> 
        <ItemTemplate> 
         <asp:Label ID="lbl_InstoreHistLotNo" runat="server" Text='<%#Eval("LotNo")%>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderStyle-Width="10%" HeaderText="<%$ Resources: CommonResources, lbl_InstoreHistPartNo.Text %>" SortExpression="PartCode"> 
        <ItemTemplate> 
         <asp:Label ID="lbl_InstoreHistPartNo" runat="server" Text='<%#Eval("PartCode")%>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderStyle-Width="10%" HeaderText="<%$ Resources: CommonResources, lbl_InstoreHistPartName.Text %>" SortExpression="PartName"> 
        <ItemTemplate> 
          <asp:Label ID="lbl_InstoreHistPartName" runat="server" Text='<%#Eval("PartName")%>'/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderStyle-Width="10%" HeaderText="<%$ Resources: CommonResources, lbl_InstoreHistInQuality.Text %>" SortExpression="Quality"> 
        <ItemStyle HorizontalAlign="Right" /> 
        <ItemTemplate> 
          <asp:Label ID="lbl_InstoreHistInQuality" runat="server" Text='<%#Eval("Quality")%>'/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderStyle-Width="10%" HeaderText="<%$ Resources: CommonResources, lbl_InstoreHistInUsercode.Text %>" SortExpression="UserCode"> 
        <ItemTemplate> 
         <asp:Label ID="lbl_InstoreHistInUsercode" runat="server" Text='<%#Eval("UserCode")%>'/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderStyle-Width="15%" HeaderText="<%$ Resources: CommonResources, lbl_InstoreHistInTime.Text %>" SortExpression="InStoreDate"> 
       </asp:TemplateField> 
      </Columns> 
      <PagerStyle HorizontalAlign="Left" /> 
      <PagerSettings Position="TopAndBottom" Mode="Numeric" /> 
     </asp:GridView> 

这只是一个简单的演示gridview数据绑定。 然而,我的头文字是从资源文件加载,你可以自己设置,像串“AAA”,“BBB”,“CCC”

在后端,你的代码可能是这样的:

DataTable dt = SqlHelper.ExcuteDataSet("select * from InStoreHistory"); 
gvList.DataSource = dt; 
gvList.DataBind();