GridView 以及淺談其與 DataTable , DataSet , DataGridView , DataSource 之間關係

 GridView 一些常用屬性

AutoGenerateColumns 當有Coulumns被Bind時,自動進入GridView中,不需要指定

<%# Bind(some)%>之類的

Style="text-align: center" Css屬性,同樣可以用left之類的

或者 ItemStyle-HorizontalAlign="Center" 可達到同樣的效果,可指定單一Column


程式開始後,GridView裡的按鈕或者Text的ID會變成 GridViewID_目標按鈕ID[TargetRow]


比較之間關係

DataSet 與 DataTable 關係

DataSet是一個內存的資料庫,DataTable則是一個資料表DataSet可以儲存多個DataTable

如 DataSet[TableName]


DataSet 與 DataAdapter 關係

DataAdapter 類似於DataSet與資料庫之間的橋樑,主要用於Select Fill之類的。

SqlDataAdapter sqlDA = new SqlDataAdapter(SqlCommend);

sqlDA.Fill(DataSet , '表名'); // or sqlDA.Fill(DataSet)

GridViewID.DataSource = DataSet;

GridViewID.Bind();

//記得先開啟Connection.open();


DataView  和 DataGridView

DataView 是一種資料型態 DataGridView是一種前端呈現的表。

DataSet ds = new DataSet();

dgv1.DataSource = ds.Tables["Table Name"];

DataView view = new DataView(ds.Tables["Table Name"]);

dgv2.DataSource = view;


DataSource的重組

反向推出 DataView 之類的 DataSource

以DataTable dt = ((DataView)id.DataSource).ToData();

再以DataColumn  和 DataRow進行賦值

--------------------經過測試 好像不能使用 .ToData() 沒這函式

倒是GridView.DataSource出來的資料形態是Object 可以轉型成DataTable

但是由於被綁定了好像不能隨意使用

必須做類似下列的事情才能解除綁定

DataTable dtb = dt.Clone();


            foreach (DataRow dtrr in dt.Rows)

            {

                dtb.ImportRow(dtrr);

            }

所以其實也不需要 DataTable dt = (DataTable)GridView.DataSource

只證明了GridView.DataSource是 DataTable型態而已

參考:https://dotblogs.com.tw/jclittleworld/2017/07/17/160422

------------------------------------------------------------------------------------------------------

 <asp:GridView ID="grv_dataimport" runat="server" Width="100%" Style="text-align: center" AutoGenerateColumns="False"

            <Columns>

                <asp:TemplateField HeaderText="*">

                    <HeaderTemplate>

                        <asp:CheckBox ID="cb_allitem" runat="server" OnCheckedChanged="cb_Allitem_Checked" AutoPostBack="true" Text="選取" Width="60px"/>

                    </HeaderTemplate>

                    <ItemTemplate>

                        <asp:CheckBox ID="cb_singleitem" AutoPostBack="true" OnCheckedChanged="cb_click_HiddenTheButton" runat="server"></asp:CheckBox>

                    </ItemTemplate>

                </asp:TemplateField>

          </Columns>


GridView 層級

CheckBox >  HeaderCell > GridViewRow > ChildTable >GridView

ItemTemplate也同樣


參考:

https://www.itread01.com/content/1548963912.html

https://blog.csdn.net/superior_yong/article/details/25979987

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤