2012-08-06 25 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();