2013-06-24 94 views
1

我通過C#代碼手動填充ASP.NET GridView並打開了分頁。當用戶從一個頁面轉到另一個頁面時,列的寬度會根據屏幕上的內容進行調整。我希望GridView列保持不變,無論用戶在哪個頁面上(最好將每列設置爲特定列的最大字符長度)。有人可以建議採取最佳行動來實現這一目標。這裏是我如何填充GridView保持GridView列寬相同

private void BindData(string sortExpression, string sortDirection) 
    { 


     db_set_connection_string.set_db_connnection_string(configuration_manager.GetConfigValue("DBSTRING.1")); 
     db_set_connection_string.set_individual_global_variables(configuration_manager.GetConfigValue("DBSTRING.1")); 

     sSQLResults = db_connector_mysql.execute_query_with_results_returned("SELECT * From city", false); 


     //Dynamically create columns 
     foreach (DataColumn column in sSQLResults.Columns) 
     { 
      //So we aren't getting duplicates, we need to check to see if it exists first 
      if (DoesColumnExistInGridView(column.ColumnName) == false) 
      { 
       BoundField nameColumn = new BoundField(); 
       nameColumn.DataField = column.ColumnName; 
       nameColumn.HeaderText = column.ColumnName; 
       nameColumn.SortExpression = column.ColumnName; 
       GridView1.Columns.Add(nameColumn); 
      } 
     }    


     this.GridView1.DataSource = sSQLResults; 

     if (sortExpression != null) 
     { 
      sSQLResults.DefaultView.Sort = sortExpression + " " + sortDirection; 
     }    
     this.GridView1.DataBind(); 
    } 
+0

的一切,我在網上看到的是沒有顯示一個簡單的解決了這一點。您可能不得不切換到中繼器,這將使您完全控制數據顯示的外觀和感覺。 –

回答

0

有兩種方法可以做到這一點。動態添加列時定義寬度。

//Dynamically create columns 
    foreach (DataColumn column in sSQLResults.Columns) 
    { 
     //So we aren't getting duplicates, we need to check to see if it exists first 
     if (DoesColumnExistInGridView(column.ColumnName) == false) 
     { 
      BoundField nameColumn = new BoundField(); 
      nameColumn.DataField = column.ColumnName; 
      nameColumn.HeaderText = column.ColumnName; 
      nameColumn.SortExpression = column.ColumnName; 
      nameColumn.Width=1; 
      GridView1.Columns.Add(nameColumn); 
     } 
    }    

,或者你可以做,在網格視圖行數據綁定事件

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){ 
e.Rows.Cell[1].width=1;} 
+0

這些工作都沒有。 nameColumn.BoundField不包含Width屬性。對於RowDataBound事件,我不相信這是可行的,因爲我手動更新GridView。 – user2437909

+0

仍然與行數據綁定事件的作品。因爲事件如果你手動綁定網格,這個事件將被調用。 –

+0

我已經寫了一篇博客文章,設置動態寬度的asp.net網格view.http://www.dotnetjalps.com/2013/07/Dynamically-setting-GridView-Column-width-in-ASP-Net.html。希望對你有幫助 –