DataGrid 中的特殊应用

本文介绍如何通过DataGrid的ItemDataBound事件实现鼠标悬浮时的行背景颜色变化、自定义列宽调整以及创建复杂的三级联动下拉菜单等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.//生成鼠标前后着色的变化
只用增加ItemDataBound事件就可以.
None.gifprivate void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{            
InBlock.gif            e.Item.Cells[
1].Text=Convert.ToString(e.Item.ItemIndex+1);//产生序号
InBlock.gif            
//生成鼠标前后着色的变化
InBlock.gif
            if(e.Item.ItemType!=ListItemType.Header)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if(e.Item.ItemIndex%2==0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    e.Item.Attributes.Add( 
"onmouseout","this.style.backgroundColor='PaleGoldenrod'");
ExpandedSubBlockEnd.gif                }

InBlock.gif                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    e.Item.Attributes.Add( 
"onmouseout","this.style.backgroundColor='LightGoldenrodYellow'");
ExpandedSubBlockEnd.gif                }

InBlock.gif              e.Item.Attributes.Add( 
"onmouseover","this.style.backgroundColor='#C1D2EE'");
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }


2.//调整列宽
只用增加ItemDataBound事件就可以
None.gifprivate void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{            
InBlock.gif            e.Item.Cells[
1].Text=Convert.ToString(e.Item.ItemIndex+1);//产生序号
InBlock.gif            //调整列宽
InBlock.gif
            switch (e.Item.ItemType)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
case ListItemType.Item:
InBlock.gif                
case ListItemType.AlternatingItem:
InBlock.gif                    e.Item.Attributes.Add(
"ondblclick","alert('"+e.Item.ItemIndex+"');");                    
InBlock.gif                    
break;
InBlock.gif                
case ListItemType.Header:
InBlock.gif                    e.Item.Cells[
0].ColumnSpan=2;//合并单元格
InBlock.gif
                    e.Item.Cells[1].Visible=false;
InBlock.gif                    
break;
InBlock.gif                
case ListItemType.EditItem:
InBlock.gif                    
for (int i=4; i < DataGrid1.Columns.Count-2; i++)//只调整被编辑的列
ExpandedSubBlockStart.gifContractedSubBlock.gif
                    dot.gif{
InBlock.gif                      
if(e.Item.ItemType==ListItemType.EditItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif                      
dot.gif{
InBlock.gif                           e.Item.Cells[i].Attributes.Add(
"Width""70px");
ExpandedSubBlockEnd.gif                      }

ExpandedSubBlockEnd.gif                    }

InBlock.gif                        
ExpandedSubBlockEnd.gif        }

3.如果编辑中省,市,区这样的DropDownList,最好的方法就是做在三连动文件

只用增加ItemDataBound事件就可以
None.gifprivate void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{            
InBlock.gif            e.Item.Cells[
1].Text=Convert.ToString(e.Item.ItemIndex+1);//产生序号
InBlock.gif            
// 在此生成三级连动
InBlock.gif
                    string sqlprovince="select * from province";
InBlock.gif                    DataSet dsprovince
=GetDataSet(sqlprovince);
InBlock.gif                    
//一级
InBlock.gif
                    if(e.Item.ItemType==ListItemType.EditItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        DropDownList ddlprovince
=(DropDownList)e.Item.FindControl("province");
InBlock.gif                        ddlprovince.DataSource
=dsprovince;
InBlock.gif                        ddlprovince.DataTextField
="province";
InBlock.gif                        ddlprovince.DataValueField
="provinceID";
InBlock.gif                        ddlprovince.DataBind();
InBlock.gif                        ddlprovince.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"provinceID"))).Selected=true;
InBlock.gif                        
//二级
InBlock.gif
                        if(e.Item.ItemType==ListItemType.EditItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
dot.gif{
InBlock.gif                            
if(ddlprovince.SelectedIndex!=-1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                            
dot.gif{
InBlock.gif                                
string sqlcity="select * from city where father='"+ddlprovince.SelectedValue+"'";
InBlock.gif                                DropDownList ddlcity
=(DropDownList)e.Item.FindControl("city");
InBlock.gif                                DataSet dscity
=GetDataSet(sqlcity);                
InBlock.gif                                ddlcity.DataSource
=dscity;
InBlock.gif                                ddlcity.DataTextField
="city";
InBlock.gif                                ddlcity.DataValueField
="cityID";
InBlock.gif                                ddlcity.DataBind();
InBlock.gif                                ddlcity.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"cityID"))).Selected=true;
InBlock.gif                                
//三级
InBlock.gif
                                if(e.Item.ItemType==ListItemType.EditItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif                                
dot.gif{
InBlock.gif                                    
if(ddlcity.SelectedIndex!=-1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                                    
dot.gif{
InBlock.gif                                        
string sqlarea="select * from area where father='"+ddlcity.SelectedValue+"'";
InBlock.gif                                        DropDownList ddlarea
=(DropDownList)e.Item.FindControl("area");
InBlock.gif                                        DataSet dsarea
=GetDataSet(sqlarea);                
InBlock.gif                                        ddlarea.DataSource
=dsarea;
InBlock.gif                                        ddlarea.DataTextField
="area";
InBlock.gif                                        ddlarea.DataValueField
="areaID";
InBlock.gif                                        ddlarea.DataBind();
InBlock.gif                                        ddlarea.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"areaID"))).Selected=true;
ExpandedSubBlockEnd.gif                                    }

ExpandedSubBlockEnd.gif                                }

ExpandedSubBlockEnd.gif                            }

ExpandedSubBlockEnd.gif                        }

ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
break;
InBlock.gif                
default:
InBlock.gif                    
break;
ExpandedBlockEnd.gif            }
            
None.gif        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值