2016-01-20 58 views
0

所以在這裏,我在asp.net中有一行gridviews。現在的問題是不一致的地方,一些gridview有5個數據,有些會有10個。它看起來很醜,因爲我需要打印。這很關鍵。如何在asp.net中顯示固定的行數gridview

我想顯示最多15行。它是數據庫中的數據庫,用戶可以填寫表格中的主題(最多15行)。如果有任何行沒有任何數據。它會將其留空(請注意,數據庫沒有填充15行,只有用戶輸入的內容)。我已經做了一些研究,但只找到了一些可能相關的,但使用javascipt /改變當前的SQL。我不允許在網站中使用任何JavaScript(稍後支持將是一個問題)。因爲我是實習生。 sql代碼給了我。我只需要實現它。我能做些什麼來顯示gridview中的固定數量的行?是否有任何屬性可以在gridview中用來填充15行的空白空間?

aspx文件

<asp:GridView ID="GridViewResult" runat="server" AutoGenerateColumns="False" EmptyDataText="NO RECORD" Font-Size="Small" 
         GridLines="Both" CellPadding="1" Height="101px" Width="100%" ShowFooter="True"> 
         <Columns> 
          <asp:TemplateField HeaderText="Subjects"> 
           <ItemTemplate> 
            <asp:Label ID="lbl" runat="server" Text='<%# Eval("Subjects") %>'></asp:Label> 
           </ItemTemplate> 
           <ItemStyle HorizontalAlign="Center" Width="25px" /> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Grade"> 
           <ItemTemplate> 
            <asp:Label ID="lbl1" runat="server" Text='<%# Eval("Grade") %>'></asp:Label> 
           </ItemTemplate> 
           <ItemStyle HorizontalAlign="Center" Width="25px" /> 
          </asp:TemplateField> 
         </Columns> 
         <HeaderStyle Font-Bold="True" HorizontalAlign="Center" Height="40px"/> 
         <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> 
         <FooterStyle HorizontalAlign="Center" />       
        </asp:GridView> 

和背代碼

Protected void LoadgvResult1() 
{ 
    SqlCommand cmdgvKep1 = new SqlCommand(); 
    cmdgvKep1.Connection = conn; 
    cmdgvKep1.CommandType = CommandType.Text; 
     cmdgvKep1.CommandText = " SELECT ROW_NUMBER() OVER(ORDER BY Grade ASC) AS Numb, Subjects, Grade "; 
     cmdgvKep1.CommandText += " FROM Result_SMU "; 
     cmdgvKep1.CommandText += " WHERE siri = '" + siri + "' "; 
    conn.Open(); 

    SqlDataAdapter adaptergvKep1 = new SqlDataAdapter(cmdgvKep1); 
    DataSet dsgvKep1 = new DataSet(); 

    adaptergvKep1.Fill(dsgvKep1, "Result_SMU"); 

    GridViewResult1.DataSource = dsgvKep1; 
    GridViewResult1.DataBind(); 

    conn.Close(); 
} 
+0

你正在尋找分頁?如果是這樣的話,你可以設置'AllowPaging =「True」'。 –

+0

不,我不尋找分頁。我需要它在一頁中顯示所有內容,因爲它用於打印。像15行盒/數據一樣,如果沒有數據,用空白填充空行。 – idwell

+0

嘗試過濾datasource,'dsgvKep1.Tables [0] .Rows.Cast ()。拿(15);' –

回答

0

有很多與你的代碼的問題。

1)你的數據訪問層不應該在同一個地方,當你 的DataBind網格

2)你不應該使用全局的SqlConnection。連接池是您的朋友 。此外,如果發生異常,您的連接永遠不會關閉。

3)您的查詢應使用sql參數來防止Sql注入。

4)你應該在使用語句中包裝SqlDataAdapter,所以它將在Fill後處理 。

如果我理解正確的話,你要填充與僞記錄電網由於某種原因,在C#時的記錄數是在15,你可以添加虛擬行這樣的獲取數據集。

 int countRows = dsgvKep1 .Tables[0].Rows.Count; 
     int dummyRecords = 0; 

     if(countRows < 15) 
     { 
      dummyRecords = 15 - countRows; 
     } 

     for (int i = 0; i < dummyRecords; i++) 
     { 
      DataTable tbl = dsgvKep1.Tables[0]; 
      DataRow row = tbl.NewRow(); 

      //add dummy values if you want 
      //row["ColumnName"] = value; 
      tbl.Rows.Add(row); 
     } 

我勸你解決4個指針,我給你。從我看到你是實習生,這將對你長遠有益。

我寫如何在這個問題創建一個簡單的數據訪問層:checking user name or user email already exists,在這裏你可以看到數據層,SqlDataAdapter的處置,防止不關閉SQL連接時出現異常,也使用SqlComand.Parameters防止SQL注入攻擊。

+0

首先。感謝您的建議。當我有額外的時間時,我可能會解決它。針對當前的問題。它仍然顯示5行數據。我在這裏做錯了什麼?我添加了在數據綁定之後和關閉連接之前給出的代碼 – idwell

+0

如果數據集有15條記錄,則將其放入DataSource中時,請檢入調試。 – mybirthname

相關問題