DataGrid基础,添加DropDownList,改变单击行的颜色,隐藏显示列

一:基本
<asp:TemplateColumn HeaderText="标题" SortExpression="对应字段名"> 
        
<ItemTemplate> 
                
//平常状态时套用的的模板 
                <asp:Label runat="server" Text='<%#  DataBinder.Eval(Container.DataItem,"对应字段名")%>'/> 
        
</ItemTemplate> 

        
<EditItemTemplate> 
                
//编辑模式下套用的模板 
                <asp:TextBox runat="server" id="" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/> 
                
<asp:RequiredFieldValidator id="" runat="server"/> 
                 
//可添加大量你喜欢的控件 
        </EditItemTemplate> 
</asp:TemplateColumn> 

<%%> 服务器代码标识符  # 数据绑定的符号
DataGrid的中的一行称为一个DataGridItem,每个DataGridItem包含一个隐藏的GridItemIndex属性,记录DataGridItem的索引值,从0开始;另外每个DataGridItem还包含一个隐藏的DataItem属性,其中包含一个参考指向数据源中对应的一条数据  
在<asp:BoundColumn HeaderText="" DataField=""  ReadOnly=true></asp:BoundColumn>  设为ReadOnly在编加模式下可以只读显示
二:在DataGrid中添加DropDownList 

<asp:TemplateColumn>
            
<ItemTemplate>
                    
<asp:Label runat="server" Text='<%#  DataBinder.Eval(Container.DataItem,"对应字段名")%>'/> 
            
</ItemTemplate>
            
<EditItemTemplate>
                    
<asp:DropDownList runat="server"  DataSource='<%#  ds.Tables[""].DefaultView%>'  DataTextField=""  DataValueField=""  SelectIndex='<GetSelectIndex((string)DataBinder.Eval(Container.DataItem,"根据这个字段名获取DropDownList的index属性"))%>'/>
            
</EditItemTemplate>    

  //其中ds为绑定到DataGrid中的数据源DataSet,GetSelectIndex()为取得index的方法,在页面中如下声明        

   public int GetSelectIndex(string str)
            
{
                   
//这样的一个缺点是  DropDownList可能取重复的值,但有时是必要的,所以另一个静态声明方法
                  
//而且传入的参数那列必须是唯一值,如果有重复值的话,index就会只取前面的
                     int i = 0;
                   
if(str!=null)
                   
{
                            
foreach(DataRow classroom in ds.Tables["UserInfo"].Rows)
                            
{
                                     
if(str==classroom["UserName"].ToString())
                                      
{      
                                               
break;
                                      }

                                     i
=i+1;
                               }
    
                   }

                   
return i;
              }

这里是静态绑定DropDownList数据源,取索引略去。 

               
            
<asp:TemplateColumn>
                    
<ItemTemplate>
                            
<asp:Label runat="server" Text='<%#  DataBinder.Eval(Container.DataItem,"对应字段名")%>'/> 
                    
</ItemTemplate>

                    
<EditItemTemplate>
                            
<asp:DropDownList runat="server"  DataSource='<%#  ds.Tables[""].DefaultView%>'  SelectIndex='<GetSelectIndex2((string)DataBinder.Eval(Container.DataItem,"根据这个字段名获取DropDownList的index属性"))%>'>
                                    
<asp:ListItem value="aaaa">aaaa</asp:ListItem>                
                                   
<asp:ListItem value="bbbb">bbbb</asp:ListItem>     
                                   
<asp:ListItem value="cccc">cccc</asp:ListItem>         
                         
</asp:DropDownList>
                    
</EditItemTemplate>
          
</asp:TemplateColumn>

三:单击改变当前行颜色

在Item_Create中添加代码:

DataGrid Item Create 

客户端代码:(javascript):

<script language=javascript> 
function CG(obj) 

var Curr_TR=document.all.tags("tr"); 
for(var i=1;i<Curr_TR.length;i++

Curr_TR[i].Style.backgroundColor
="white"
}
 
  
if(obj.style.backgroundColor="yellow")
 
{
        obj.style.backgroundColor
="white"
  }

  
else
  
{
        obj.style.backgroundColor
="yellow"
    }

}
 
</script> 

四:隐藏显示列

  

隐藏和显示DataGrid列的操作

四:动态添加列,删除列

BoundColumn col = new BoundColumn();
col.HeaderText
="标题"
col.DataField
="绑定数据列";
DataGrid1.Columns.Add(col); 

DataGrid1.Columns.Remove(col);
posted on 2005-11-18 13:47  泽来  阅读(1287)  评论(0编辑  收藏  举报