簡體   English   中英

Gridview,自動生成的列,復選框列可編輯

[英]Gridview, Autogenerated Column, Checkbox Column Editable

我有一個綁定到數據源的gridview。

 <asp:GridView ID="DocumentReviewGrid" runat="server" AllowPaging="True" AllowSorting="True"
                    EnableModelValidation="True" Width="100%" BorderStyle="None" 
                    CssClass="docnav_data" BorderWidth="1px" GridLines="None" DataSourceID="DocumentReviewDataSource"
                    HorizontalAlign="Left" OnRowDataBound="DocumentReviewGrid_RowDataBound" 
                    OnRowCreated="DocumentReviewGrid_RowCreated" CellSpacing="5"
                    PageSize="20" OnPageIndexChanged="DocumentReviewGrid_PageIndexChanged">
                    <AlternatingRowStyle BackColor="#EBF2F9" BorderStyle="None" />
                    <FooterStyle HorizontalAlign="Left" />
                    <HeaderStyle BackColor="#E7E7E7" HorizontalAlign="Left" />
                    <PagerSettings Mode="NumericFirstLast" Position="Top" PageButtonCount="4" />
                    <PagerStyle HorizontalAlign="Center" />                       
                </asp:GridView>

在此處輸入圖片說明

如您所見,“自動生成的列”設置為true,因此必須將其保留為此類。 列之一是SQL位值,因此將其表示為復選框。 我只想編輯復選框列,而不使用“ AutoGenerateEditButton”屬性。 我只想:

  • 能夠選中/取消選中復選框(我被困在這里)
  • 使用外部按鈕執行單個更新
  • 其他列必須是只讀的

無論如何,幾乎不能直接對自動生成的列進行直接操作,因此沒有簡單的方法可以做到這一點。 因此,您可以做的是創建一個自定義列,該列將始終排在任何自動生成的列之前(同樣,此行為無法更改),然后隱藏自動生成的位列。

這里介紹如何隱藏列。 本質上,您不能使用Columns集合,因此需要執行以下操作:

protected void DocumentReviewGrid_RowCreated(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[X].Visible = false; // hides the first column
}

X是要隱藏的列的從0開始的索引。

現在,以該列為開頭,只需按所需方式定義它即可,保留AutoGenerateColumns="true"

<asp:GridView ID="DocumentReviewGrid"...>
    <Columns>
        <asp:CheckBoxField HeaderText="Esclusione" DataField="Esclusione" />
    </Columns>
</asp:GridView>

誠然,這確實有點hacker,但這將使您幾乎可以找到所需的位置-顯示和可編輯的bool列。

暫無
暫無

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

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