DataGrid的列操作個人總結

來源:互聯網
上載者:User
datagrid 繫結資料行
<asp:BoundColumn
DataField="datetime" 欄位名
HeaderText="時間" 列表頭
HeaderImagerUrl=""> 顯示於列頁首中的圖片,此圖片會取代HeaderText的文本
</asp:BoundColumn>

如果“自動建立列”為true,則繫結資料行先顯示,接著顯示自動列,而且自動產生的列不會被加入到columns集合中。


超級連結列
<asp:HyperLinkColumn
Text="文本" //各列顯示相同的文本,此時DataTextField優先
DataTextField="代碼" //綁定的欄位名
DataTextFormatString="" //來自訂DataTextField的顯示格式

NavigateUrl="url" //所有列使用同一url
DataNavigateUrlField="codeId" //URL欄位變數,即傳遞的變數值,有時和DataTextField同
DataNavigateUrlFormatString="WebForm2.aspx?code={0}" URL格式字串,GET方式傳遞的字串
Target="_blank" > //開啟連結開啟的位置或方式
</asp:HyperLinkColumn>



按鈕列

<Columns>
普通按鈕
<asp:ButtonColumn
Text="所有列統一按鈕名" //所有列統一按鈕名
DataTextField="持股名稱" //綁定欄位
CommandName="btn"> //
HeaderText="操作"> //列表頭
</asp:ButtonColumn>

選擇按鈕
<asp:ButtonColumn
Text="選擇"
DataTextField="持股名稱"
CommandName="Select">
</asp:ButtonColumn>

編輯按鈕
<asp:EditCommandColumn
ButtonType="LinkButton"
UpdateText="更新"
CancelText="取消"
EditText="編輯">
</asp:EditCommandColumn>

刪除按鈕
<asp:ButtonColumn
Text="刪除"
ButtonType="PushButton"
CommandName="Delete">
</asp:ButtonColumn>

</Columns>

CommandName設定在DataGrid1_ItemCommand()事件中
擷取同一行中哪個按鈕被點擊: string s=e.CommandName;

//預設是linkbutton,也必須是linkbutton


單擊按鈕首先響應 DataGrid1_ItemCommand 事件
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

TableRow tr=e.Item; //得到操作的當前行,存入控制項
string code=tr.Cells[1].Text; //叢控制項再得到儲存格的文本
string time=tr.Cells[2].Text;

TableCell cell1=e.Item.Cells[1]; //這樣也可以取得儲存格的值,存入控制項

Server.Transfer("WebForm2.aspx?code="+code+" &or time="+time);
}

接著不同按鈕響應不同事件:
編輯
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
this.datashow();
}

更新
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//得到主鍵列的值
int i=(int)this.DataGrid1.DataKeys[e.Item.ItemIndex];
或 string ii=(string)this.DataGrid1.DataKeys[e.Item.ItemIndex];
根據主鍵,用儲存格的資料更新主鍵對應的紀錄
//寫update語句

}

取消
private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=-1;
this.datashow();
}

注意:可以將主鍵繫結資料行設為唯讀;



刪除
//應首先設定DataKeyField屬性為主鍵列
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

//得到主鍵列的值
int i=(int)this.DataGrid1.DataKeys[e.Item.ItemIndex];
或 string ii=(string)this.DataGrid1.DataKeys[e.Item.ItemIndex];
//寫刪除語句,

}


當在到伺服器發送之間,在資料清單控制項中選擇不同的項時,引發 SelectedIndexChanged 事件
也可通過int i2 =(int)this.DataGrid1.DataKeys[this.DataGrid1.SelectedIndex];得到主索引值

DataKeyField 是一個欄位,他的所有索引值內容被填入DataKeys集合中,通過DataKeys[]來去某條記錄的主索引值


排序

指定預設排序 :
選擇“自動建立列”true;
在“行為”部分,選擇“允許排序”框。
在SortCommand 事件裡,通過e.SortExpression對視圖重新排序綁定。
(缺點:每一列都有“連結”按鈕,)

指定自訂排序:
選擇“自動建立列”false;
在需要排序的列,設定SortExpression
注意:沒有排序運算式的列將不引發 SortCommand 事件,所以先設定排序運算式

private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string sql="server=127.0.0.1;database=ltp;user id=sa;password=";
SqlConnection mycon=new SqlConnection(sql);

string selsql="select * from data";
SqlDataAdapter da=new SqlDataAdapter(selsql,mycon)



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。