2012-01-10 81 views
0

我在一個Repeater控件中使用一個GridView來生成三個GridView,它們之間有3個相似的列和不同數量的不同列。一切正常,很好。我只是面對GridView寬度的一個問題。 該標誌如下:如何修改GridView的寬度?

第二個GridView有很多列,這就是爲什麼它的寬度超出了頁面的邊界,這也發生在第三個gridview。我解決了這個問題,通過使每列的標題顯示爲virtcally,但客戶不喜歡它。然後,我試圖儘量減少字體的大小,我達到了7px,他們說它太小了。現在,我想知道這個問題的解決方案。請幫忙嗎?

順便說一下,我沒有問題從左到右使用滾動條,但是如果我可以設置前四列進行修復。我也不知道該怎麼做:)。那麼該怎麼辦呢,如果這是這個問題

看到圖像的唯一解決方案下面給出在第一個GridView和第二個: enter image description here

回答

1

如果你使用一個div你可以這樣做:

<div style="overflow:auto"> 
</div> 

它將把水平滾動條,如果在GridView數據超出

0

我以前也遇到類似的問題,我使用了不同的解決方案:

1)總結你的GridView在一個div一個明確的寬度,確保水平滾動:

<div style="width:700px; overflow:auto; overflow-y:hidden;"> 

2)增加您的實際頁面的寬度。我已經使用了不同寬度的多個主頁,用於正常和更寬的內容,並據此繼承。

3)對於適當的列,將寬度設置爲小(如20-30px),並在GridView的RowDataBound事件中隱藏單元格文本內容。接下來,添加含有細胞的文字工具提示到細胞本身,可選設置背景色指示的內容和轉換<br/>Environment.NewLine反之亦然:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState != DataControlRowState.Edit) 
    { 
     if (e.Row.Cells[0].Text != "") 
     { 
      e.Row.Cells[0].ToolTip = e.Row.Cells[0].Text.Replace(Environment.NewLine, "<br/>"); 
      e.Row.Cells[0].Text = ""; 
      e.Row.Cells[0].BackColor = Color.Lavender; 
     } 
    } 
} 

我很欣賞這種方法可能不會幫助你的列標題是也是一個問題。

關於固定列,GridView控件沒有內置的功能,但您可以使用CSS稍微拉一下。我已經使用了一個名爲'locked'的類,它在RowDataBound中應用於GridView單元格,但效果因瀏覽器而異,而且看起來非常黑。

CSS

td.locked, th.locked 
{ 
    position:relative; 
    left:expression(this.offsetParent.scrollLeft-3); 
} 

C#

e.Rows.Cells [0] = .CssClass 「鎖定」;

我建議從這裏開始http://forums.asp.net/t/1120278.aspx或Google'asp.net中的凍結gridview列',然後嘗試根據您的要求自定義方法。