簡體   English   中英

如何修改GridView的寬度?

[英]How to modify the width of the GridView?

我在Repeater控件內使用GridView來生成三個GridView,它們具有3個相似的列,並且它們之間具有不同數量的不同列。 一切正常,一切順利。 我只是面對一個帶有GridView寬度的探針。 問題如下:

第二個GridView有很多列,這就是為什么它的寬度超出頁面邊界的原因,而第三個Gridview也是如此。 我通過使每列的標題以虛擬方式顯示來解決了這個問題,但是客戶不喜歡它。 然后,我嘗試最小化字體大小,然后達到7px,他們說字體太小。 現在,我想知道該問題的解決方案。 有什么幫助嗎?

順便說一句,從左到右使用滾動條沒有問題,但是如果可以將前四列設置為固定的話。 我也不知道該怎么做:)。 那么,如果這是唯一解決此問題的方法,那么該怎么辦

參見下圖,其中顯示了第一個GridView和第二個: 在此處輸入圖片說明

如果您使用的是div,則可以執行以下操作:

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

如果gridview中的數據溢出,它將放置水平滾動條

之前我也遇到過類似的問題,並且使用了各種解決方案:

1)將GridView以明確的寬度包裝在div中,並確保水平滾動:

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

2)增加實際頁面的寬度。 對於正常和較寬的內容,我使用了多個寬度不同的母版頁,並相應地進行了繼承。

3)對於適當的列,將寬度設置為較小的值(例如20-30px),並在GridView的RowDataBound事件中隱藏單元格文本內容。 接下來,在單元格本身上添加一個包含單元格文本的工具提示,可以選擇設置BackColor來指示內容,並將<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稍作改動。 我使用了一個名為“鎖定”的類,該類在RowDataBound期間應用於GridView單元,但是效果在不同的瀏覽器之間有所不同,而且看起來很hacky。

的CSS

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

C#

e.Rows.Cells [0] .CssClass =“ locked”;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM