DataGrid的一点使用体会........

        这个DataGrid实现的功能不算复杂.1.添加下拉框(老土了,不过比较详细);2.实现上下项的移动排序.(需要自己类的属性支持).
        下面是DataGrid中一个包含下拉框的模板列
1 <asp:TemplateColumn HeaderText="修改">
2     <ItemTemplate>
3         <asp:DropDownList id="DropDownList1" Runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl_SelectedIndexChanged">
4             <asp:ListItem Value="default" Selected="True">选择操作</asp:ListItem>
5             <asp:ListItem Value="edit">编辑版面</asp:ListItem>
6             <asp:ListItem Value="delete">删除版面</asp:ListItem>
7             <asp:ListItem Value="category">帖子类型</asp:ListItem>
8     </ItemTemplate>
9     </asp:TemplateColumn>
        注意必须要加事件OnSelectedIndexChanged="ddl_SelectedIndexChanged"
下面是如何获得这个下拉框,对其进行各种操作的代码:
 1protected void ddl_SelectedIndexChanged(object sender, System.EventArgs e) 
 2        {
 3            DropDownList ddl = (DropDownList)sender;
 4            TableCell cell = (TableCell)ddl.Parent;
 5            DataGridItem item = (DataGridItem)cell.Parent;
 6            
 7            
 8            if ( ddl.SelectedItem.Value =="edit")
 9            {
10                string url = "editboard" + int.Parse(item.Cells[0].Text) + ".aspx";
11                Response.Redirect( url );
12            }

13}

14//其余的项雷同"edit"
注意事件必须是protected或者public

DataGrid中各项排序:


aspx中的版面排序的模板列
1<asp:TemplateColumn HeaderText="版面排序">
2                            <ItemTemplate>
3                                <asp:LinkButton ID="up" Runat="server" CommandName="up"></asp:LinkButton>
4                                <asp:LinkButton ID="down" Runat="server" CommandName="down"></asp:LinkButton>
5                            </ItemTemplate>
6                        </asp:TemplateColumn>

对up和down的操作:
 1
 2        private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
 3{case "up":
 4
 5if (e.Item.ItemIndex - 1 <  0)
 6                        return;
 7                    else
 8                    {
 9                    
10                        Board b1 = ForumManager.GetBoard(int.Parse(e.Item.Cells[0].Text));
11                        Board b0 = ForumManager.GetBoard(int.Parse(DataGrid1.Items[e.Item.ItemIndex - 1].Cells[0].Text));
12                        int b1Order = b1.Board_Order; 
13                        int b0Order = b0.Board_Order;
14                        b1.Board_Order = b0Order;
15                        b0.Board_Order = b1Order;
16                        b1.Update();
17                        b0.Update();
18                        BindData(b1.Board_Id);
19                    }

20                    break;
21
22case "down":
23                    if (e.Item.ItemIndex  > this.total )
24                        return;
25                    else
26                    {
27
28                        Board b3 = ForumManager.GetBoard(int.Parse(e.Item.Cells[0].Text));
29                        Board b2 = ForumManager.GetBoard(int.Parse(DataGrid1.Items[e.Item.ItemIndex + 1].Cells[0].Text));
30                        int b3Order = b3.Board_Order; 
31                        int b2Order = b2.Board_Order;
32                        b3.Board_Order = b2Order;
33                        b2.Board_Order = b3Order;
34                        b3.Update();
35                        b2.Update();
36                        BindData( b3.Board_Id);
37                    }

38break;

其中的order属性为Board的序列属性.

点击删除按钮,弹出确认对话框.
1private void DataGrid2_ItemCreated(object sender, DataGridItemEventArgs e)
2        {
3if ( e.Item.ItemType == ListItemType.EditItem || e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
4    {
5        LinkButton lb = (LinkButton) e.Item.Cells[3].Controls[0];
6        if ( lb != null )
7            lb.Attributes.Add("onclick""return confirm('确实要删除么?')");


3.顺便补充一个:使DataGrid显示双层表头: 将下面的代码加入ItemDataBound事件中.(好像是SDK上的.)
if (e.Item.ItemType == ListItemType.Header)
{
e.Item.Cells[0].ColumnSpan = 2;
e.Item.Cells[0].Text = "大类1</td><td>大类2</td></tr><tr><td>" + e.Item.Cells[0].Text;
}

posted on 2005-10-20 20:50  老十三  阅读(518)  评论(2)    收藏  举报

导航