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

一:基本
None.gif<asp:TemplateColumn HeaderText="标题" SortExpression="对应字段名"> 
None.gif        
<ItemTemplate> 
None.gif                
//平常状态时套用的的模板 
None.gif
                <asp:Label runat="server" Text='<%#  DataBinder.Eval(Container.DataItem,"对应字段名")%>'/> 
None.gif        
</ItemTemplate> 
None.gif
None.gif        
<EditItemTemplate> 
None.gif                
//编辑模式下套用的模板 
None.gif
                <asp:TextBox runat="server" id="" Text='<%# DataBinder.Eval(Container.DataItem,"对应字段名")%>'/> 
None.gif                
<asp:RequiredFieldValidator id="" runat="server"/> 
None.gif                 
//可添加大量你喜欢的控件 
None.gif
        </EditItemTemplate> 
None.gif
</asp:TemplateColumn> 
None.gif

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

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

<?xml:namespace prefix = asp />  //其中ds为绑定到DataGrid中的数据源DataSet,GetSelectIndex()为取得index的方法,在页面中如下声明        

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

InBlock.gif                                     i
=i+1;
ExpandedSubBlockEnd.gif                               }
    
ExpandedSubBlockEnd.gif                   }

InBlock.gif                   
return i;
ExpandedBlockEnd.gif              }

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

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

三:单击改变当前行颜色

在Item_Create中添加代码:

ContractedBlock.gifExpandedBlockStart.gifDataGrid Item Create#region DataGrid Item Create 
InBlock.gif
public void DataGrid_ItemCreate(objectsender,System.Web.UI.WebControls.DataGridItemEventArgs e) 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gif
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gife.Item.Attributes.Add(
"onclick","javascript:return CG(this);");//单击改变颜色 
ExpandedSubBlockEnd.gif
}
 
ExpandedSubBlockEnd.gif}
 
ExpandedBlockEnd.gif
#endregion
 
None.gif

客户端代码:(javascript):

None.gif<script language=javascript> 
None.gif
function CG(obj) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gif
var Curr_TR=document.all.tags("tr"); 
InBlock.gif
for(var i=1;i<Curr_TR.length;i++
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifCurr_TR[i].Style.backgroundColor
="white"
ExpandedSubBlockEnd.gif}
 
InBlock.gif  
if(obj.style.backgroundColor="yellow")
ExpandedSubBlockStart.gifContractedSubBlock.gif 
dot.gif{
InBlock.gif        obj.style.backgroundColor
="white"
ExpandedSubBlockEnd.gif  }

InBlock.gif  
else
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif        obj.style.backgroundColor
="yellow"
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}
 
None.gif
</script> 
None.gif

四:隐藏显示列
show.jpg
  

ContractedBlock.gifExpandedBlockStart.gif隐藏和显示DataGrid列的操作#region 隐藏和显示DataGrid列的操作
InBlock.gif  
//取得DataGrid的列名并赋给DropDownList
InBlock.gif
  private void FillDropGrid(DataGrid dg)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
foreach(DataGridColumn col in dg.Columns)
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    
//如果不排除这些,在选中这些列时会触发事件,暂时没有理解
InBlock.gif
    if(col.HeaderText=="删除"||col.HeaderText=="编辑"||col.HeaderText=="修改")
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif     
return;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif     DropGrid.Items.Add(col.HeaderText);
ExpandedSubBlockEnd.gif    }
     
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

InBlock.gif  
//根据传入的列名隐藏显示一列
InBlock.gif
  private void HideDataGridColumn(int index,bool show)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   DGridUnit.Columns[index].Visible
=show;
ExpandedSubBlockEnd.gif  }

InBlock.gif  
//显示全部列
InBlock.gif
  private void showAll(DataGrid dg)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
foreach(DataGridColumn col in dg.Columns)
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    col.Visible
=true;
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

InBlock.gif  
//窗体装载的时候填充,DropDown的load事件
InBlock.gif
  private void DropGrid_Load(object sender, System.EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
this.FillDropGrid(DGridUnit);
ExpandedSubBlockEnd.gif  }
  
InBlock.gif
//隐藏按钮事件
InBlock.gif
  private void BtnHide_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
this.HideDataGridColumn(DropGrid.SelectedIndex,false);
InBlock.gif   
this.BindGrid();
ExpandedSubBlockEnd.gif  }

InBlock.gif
//显示按钮事件
InBlock.gif
  private void BtnShowOne_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
this.HideDataGridColumn(DropGrid.SelectedIndex,true);
InBlock.gif   
this.BindGrid();
ExpandedSubBlockEnd.gif  }

InBlock.gif
InBlock.gif
//全部显示  
InBlock.gif
private void BtnShowAll_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
this.showAll(DGridUnit);
InBlock.gif   
this.BindGrid();
ExpandedSubBlockEnd.gif  }

ExpandedBlockEnd.gif  
#endregion

None.gif

四:动态添加列,删除列

None.gifBoundColumn col = new BoundColumn();
None.gifcol.HeaderText
="标题"
None.gifcol.DataField
="绑定数据列";
None.gifDataGrid1.Columns.Add(col); 
None.gif
None.gifDataGrid1.Columns.Remove(col);

转载于:https://www.cnblogs.com/sunsjorlin/archive/2005/11/18/279545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值