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
留言
張貼留言