DataGrid的幾個小技巧!

來源:互聯網
上載者:User
datagrid|技巧 方法一:使用模版列

我們在綁定好資料的DataGrid增加一個模版列,在列中放置一個按鈕
<asp:TemplateColumn>
<ItemTemplate>
<asp:Button id="btnDelete" runat="server" Text="刪除"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
然後我們在DataGrid的ItemDataBound中添加以下代碼
switch(e.Item.ItemType)
{
case(ListItemType.Item):
case(ListItemType.AlternatingItem):
{
Button btn=(Button)e.Item.FindControl("btnDelete");
btn.Attributes.Add("OnClick","return window.confirm('fs')");
break;
}
}
DataGrid在綁定資料的時候將觸發此事件,而且每行觸發一次.我們可以通過e.Item獲得行,而通過e.Item.ItemType獲得行類型.

方法二:使用按鈕列

我們在綁定好資料的DataGrid增加一個刪除按鈕列
<asp:ButtonColumn Text="刪除" CommandName="Delete"></asp:ButtonColumn>
然後我們在DataGrid的ItemDataBound中添加以下代碼
switch(e.Item.ItemType)
{
case(ListItemType.Item):
case(ListItemType.AlternatingItem):
{
LinkButton btn=(LinkButton)e.Item.Cells[4].Controls[0];
btn.Attributes.Add("OnClick","return window.confirm('fs')");
break;
}
}
可以看到我們這裡獲得控制項引用的方法有所不同,使用了e.Item.Cells[4].Controls[0],而沒有使用e.Item.FindControl("btnDelete"),因為我


們現在使用的是按鈕列,不能對按鈕列的按鈕設定ID屬性,而FindControl是通過ID來尋找控制項(當然我們也可以把前面的代碼用


e.Item.Cells[4].Controls[0]的代碼來替換.).



添加序號列

綁定好一個DataGrid
switch(e.Item.ItemType)
{
case(ListItemType.Item):
case(ListItemType.AlternatingItem):
{
DataGridItem row=(DataGridItem)e.Item;
TableCell cell=new TableCell();
cell.Controls.Add(new LiteralControl((e.Item.ItemIndex+1).ToString()));
row.Cells.AddAt(0,cell);
break;
}
case(ListItemType.Header):
{
DataGridItem row=(DataGridItem)e.Item;
TableCell cell=new TableCell();
cell.Controls.Add(new LiteralControl("序號"));
row.Cells.AddAt(0,cell);
break;
}
}
這裡我們用到了e.Item.ItemIndex,擷取來自 DataGrid 控制項的 Items 集合的 DataGridItem 對象的索引.


產生兩行的標題列

綁定好一個DataGrid,設定允許分頁,設定頁導航為上下型,一會我們將強制把上面的頁導航更換成標題列.這裡我想講一下DataGrid的行構成
最上面Pager,用來放置分頁導航,然後是表頭Header,接著是Item和AlternatingItem項目和交替項目(當然還有SelectedItem選中項和EditItem


編輯項等),然後是Footer表腳,最下面還有一個Pager.因為Pager行是系統自動產生的,所以在ItemDataBound事件中不能捕獲此行,這裡我使用了


ItemCreated事件,添加代碼如下
switch(e.Item.ItemType)
{
case(ListItemType.Pager):
{
if(first)
{
DataGridItem row=(DataGridItem)e.Item;
row.Cells.Clear();
TableCell cell0=new TableCell();
cell0.Controls.Add(new LiteralControl("ID"));
TableCell cell1=new TableCell();
cell1.ColumnSpan=2;
cell1.Controls.Add(new LiteralControl("FullName"));
row.Cells.Add(cell0);
row.Cells.Add(cell1);
}
first=!first;
break;
}
}
這裡的First用來判斷是上面的Pager還是下面的Pager.



相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。