功能齐全的DataGrid

该博客主要展示了Datagrid的功能实现,包含排序、单选项、复选项等。提供了HTML代码实现页面布局与交互,CS代码处理业务逻辑,如编辑、删除等操作,还给出了数据库脚本,用于创建相关数据表。

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

// 目前功能:排序、单选项、复选项、合并单元格、产生序列号、联动下拉框、编辑、删除、超连接、鼠标移动改变颜色、奇偶项颜色区分等
1.html代码
< HTML >
< HEAD >
< title > DatagridTest </ title >
< meta content ="MicrosoftVisualStudio.NET7.1" name ="GENERATOR" >
< meta content ="C#" name ="CODE_LANGUAGE" >
< meta content ="JavaScript" name ="vs_defaultClientScript" >
< meta content ="http://schemas.microsoft.com/intellisense/ie5" name ="vs_targetSchema" >
< script language ="javascript" >
functionfun_option(obj)
{
document.Form1.hiduserid.value
=obj.value;
}

functionchkAll_true()
{
varchkall=document.all["chkAll"];
varchkother=document.all["chkExport"];
if(chkother.length>0)
{
for(vari=0;i<chkother.length;i++)
{
if(chkall.checked==true)
{
chkother[i].checked
=true;
}

else
{
chkother[i].checked
=false;
}

}

}

}


functionDelete()
{
//debugger;
varchkother=document.all["chkExport"];
vartemp="";
if(chkother.length>0)
{
for(vari=0;i<chkother.length;i++)
{
if(chkother[i].checked=true)
{
temp
+=","+chkother[i].value;
}

}

temp
=temp.substring(1,temp.length);
}

if(temp=="")
{
alert('Youneedtoselectarow
inthelistbeforeselectingDelete./r/nPleaseselectarowandtryagain.');
}

elseif(window.confirm("Areyousuretodeleteallthese?"))
{
document.Form1.hiduserid.value
=temp;
vardeleteID='<%=btndelete.ClientID%>';
window.document.all(deleteID).click();
}

event.cancelBubble
=true;
}

</ script >
</ HEAD >
< body >
< form id ="Form1" method ="post" runat ="server" >
< TABLE id ="Table1" height ="100%" cellSpacing ="1" cellPadding ="1" width ="100%" border ="1" >
< tr height ="30" >
< td >< INPUT id ="chkAll" onclick ="chkAll_true()" type ="checkbox" > 全选/取消 < asp:button id ="btndelete" runat ="server" Text ="删除" ></ asp:button ></ td >
</ tr >
< TR vAlign ="top" >
< TD width ="100%" colSpan ="5" >< asp:datagrid id ="DataGrid1" runat ="server" OnEditCommand ="Edit" OnCancelCommand ="Cancel" OnUpdateCommand ="Update"
DataKeyField
="UserID" AutoGenerateColumns ="False" AllowSorting ="True" BorderColor ="Tan" BorderWidth ="1px" BackColor ="LightGoldenrodYellow"
CellPadding
="2" GridLines ="None" ForeColor ="Black" OnDeleteCommand ="Delete" >
< FooterStyle BackColor ="Tan" ></ FooterStyle >
< SelectedItemStyle ForeColor ="GhostWhite" BackColor ="DarkSlateBlue" ></ SelectedItemStyle >
< AlternatingItemStyle BackColor ="PaleGoldenrod" ></ AlternatingItemStyle >
< HeaderStyle Font-Bold ="True" BackColor ="Tan" ></ HeaderStyle >
< Columns >
< asp:TemplateColumn HeaderText ="序号" >
< ItemTemplate >
< INPUT id =radio onclick =fun_option(this) type =radio value ='<%# DataBinder.Eval(Container.DataItem,"UserID")% > 'name=radio>
</ ItemTemplate >
< FooterTemplate >
</ FooterTemplate >
</ asp:TemplateColumn >
< asp:TemplateColumn HeaderText ="序号" >
< FooterTemplate >
</ FooterTemplate >
</ asp:TemplateColumn >
< asp:TemplateColumn >
< ItemTemplate >
< INPUT id ="chkExport" type ="checkbox" value ='<%# DataBinder.Eval(Container.DataItem,"UserID")% > '>
</ ItemTemplate >
</ asp:TemplateColumn >
< asp:BoundColumn DataField ="UserID" SortExpression ="UserID" ReadOnly ="True" HeaderText ="UserID" ></ asp:BoundColumn >
< asp:TemplateColumn SortExpression ="UserName" HeaderText ="姓名" >
< ItemTemplate >
< a href ="http://singlepine.cnblogs.com/articles/266538.html" target ="_blank" >
<% #DataBinder.Eval(Container.DataItem,"UserName") %>
</ a >
</ ItemTemplate >
< EditItemTemplate >
< asp:TextBox id =UserName Text ='<%# DataBinder.Eval(Container.DataItem,"UserName")% > 'Width="88px"Runat="server">
</ asp:TextBox >
</ EditItemTemplate >
</ asp:TemplateColumn >
< asp:TemplateColumn SortExpression ="province" HeaderText ="省市" >
< ItemTemplate >
<% #DataBinder.Eval(Container.DataItem,"province") %>
</ ItemTemplate >
< EditItemTemplate >
< asp:DropDownList id ="province" Runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="ddlpovince_SelectedIndexChanged" ></ asp:DropDownList >
</ EditItemTemplate >
</ asp:TemplateColumn >
< asp:TemplateColumn SortExpression ="city" HeaderText ="县市" >
< ItemTemplate >
<% #DataBinder.Eval(Container.DataItem,"city") %>
</ ItemTemplate >
< EditItemTemplate >
< asp:DropDownList id ="city" Runat ="server" ></ asp:DropDownList >
</ EditItemTemplate >
</ asp:TemplateColumn >
< asp:TemplateColumn SortExpression ="Enabled" HeaderText ="可见否" >
< ItemTemplate >
<% #DataBinder.Eval(Container.DataItem,"Enabled") %>
</ ItemTemplate >
< EditItemTemplate >
< asp:CheckBox id =chkenabled Runat ="server" Checked ='<%# DataBinder.Eval(Container.DataItem,"Enabled")% > '>
</ asp:CheckBox >
</ EditItemTemplate >
</ asp:TemplateColumn >
< asp:EditCommandColumn ButtonType ="PushButton" UpdateText ="更新" HeaderText ="编辑" CancelText ="取消" EditText ="编辑" ></ asp:EditCommandColumn >
< asp:ButtonColumn Text ="删除" ButtonType ="PushButton" HeaderText ="删除" CommandName ="Delete" ></ asp:ButtonColumn >
</ Columns >
< PagerStyle NextPageText ="下一页" PrevPageText ="上一页" HorizontalAlign ="Right" ForeColor ="DarkSlateBlue"
BackColor
="PaleGoldenrod" ></ PagerStyle >
</ asp:datagrid ></ TD >
</ TR >
< tr height ="30" >
< td ></ td >
</ tr >
</ TABLE >
< INPUT id ="hiduserid" type ="hidden" runat ="server" >
</ form >
</ body >
</ HTML >
2.cs代码
public class DatagridTest:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.DataGridDataGrid1;
protectedSystem.Web.UI.HtmlControls.HtmlInputHiddenhiduserid;
protectedSystem.Web.UI.WebControls.Buttonbtndelete;

privatestringconstring="";

//目前功能:编辑、排序、单选项、复选项、合并单元格、产生序列号、联动下拉框、删除、超连接、鼠标移动改变颜色、奇偶项颜色区分
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(!Page.IsPostBack)
{
btndelete.Attributes.Add(
"onclick","Delete();");
SortExpression
="";
sort
="desc";
DataBind();
}

}



DataBind#regionDataBind
privatevoidDataBind()
{
stringsql="selecta.UserID,a.UserName,b.province,c.city,a.Enabled,b.provinceID,c.cityIDfromtestgrida";
sql
+="leftjoinpovincebona.Country=b.provinceID";
sql
+="leftjoincitycona.State=c.cityID";
DataSetds
=GetDataSet(sql);
dt
=ds.Tables[0];
this.DataGrid1.DataSource=dt;
this.DataGrid1.DataBind();
}

#endregion


WebFormDesignergeneratedcode#regionWebFormDesignergeneratedcode
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:ThiscallisrequiredbytheASP.NETWebFormDesigner.
//
InitializeComponent();
base.OnInit(e);
this.DataGrid1.ItemDataBound+=newDataGridItemEventHandler(DataGrid1_ItemDataBound);
this.DataGrid1.SortCommand+=newDataGridSortCommandEventHandler(DataGrid1_SortCommand);
this.DataGrid1.ItemCreated+=newDataGridItemEventHandler(DataGrid1_ItemCreated);
this.btndelete.Click+=newSystem.EventHandler(this.btndelete_Click);
}


/**////<summary>
///RequiredmethodforDesignersupport-donotmodify
///thecontentsofthismethodwiththecodeeditor.
///</summary>

privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load);

}

#endregion


GetDataSet#regionGetDataSet
privateDataSetGetDataSet(stringsql)
{
constring
=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlDataAdaptersda
=newSqlDataAdapter(sql,constring);
DataSetds
=newDataSet();
sda.Fill(ds);
returnds;
}

#endregion


DataGrid1_ItemDataBound#regionDataGrid1_ItemDataBound
privatevoidDataGrid1_ItemDataBound(objectsender,DataGridItemEventArgse)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.Attributes.Add(
"ondblclick","alert('"+e.Item.Cells[3].Text+"');");
}

if(e.Item.ItemType!=ListItemType.Header)
 
{
if(e.Item.ItemIndex%2==0)
{
e.Item.Attributes.Add(
"onmouseout","this.style.backgroundColor='PaleGoldenrod'");
}

else
{
e.Item.Attributes.Add(
"onmouseout","this.style.backgroundColor='LightGoldenrodYellow'");
}

  e.Item.Attributes.Add(
"onmouseover","this.style.backgroundColor='#C1D2EE'");
e.Item.Cells[
1].Text=Convert.ToString(e.Item.ItemIndex+1);//产生序号
 }

if(e.Item.ItemType==ListItemType.Header)
 
{
e.Item.Cells[
0].ColumnSpan=2;//合并单元格
e.Item.Cells[1].Visible=false;
 }

stringsqlpovince="select*frompovince";
DataSetdspovince
=GetDataSet(sqlpovince);
if(e.Item.ItemType==ListItemType.EditItem)
{
DropDownListddlpovince
=(DropDownList)e.Item.FindControl("province");
ddlpovince.DataSource
=dspovince;
ddlpovince.DataTextField
="province";
ddlpovince.DataValueField
="provinceID";
ddlpovince.DataBind();
ddlpovince.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"provinceID"))).Selected=true;
if(e.Item.ItemType==ListItemType.EditItem)
{
if(ddlpovince.SelectedIndex!=-1)
{
stringsqlcity="select*fromcitywherefather='"+ddlpovince.SelectedValue+"'";
DropDownListddlcity
=(DropDownList)e.Item.FindControl("city");
DataSetdscity
=GetDataSet(sqlcity);
ddlcity.DataSource
=dscity;
ddlcity.DataTextField
="city";
ddlcity.DataValueField
="cityID";
ddlcity.DataBind();
ddlcity.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"cityID"))).Selected=true;
}

}

}

}


#endregion


DataGrid1_SortCommand#regionDataGrid1_SortCommand
privatevoidDataGrid1_SortCommand(objectsource,DataGridSortCommandEventArgse)
{
if(SortExpression==e.SortExpression.ToString())
{
if(sort=="asc")
{
sort
="desc";
}

else
{
sort
="asc";
}

}

else
{
if(sort=="asc")
{
sort
="desc";
}

else
{
sort
="asc";
}

}

SortExpression
=e.SortExpression;
dt.DefaultView.Sort
=e.SortExpression+""+sort;
DataGrid1.DataSource
=dt;
DataGrid1.DataBind();
}

#endregion


DataGrid1_ItemCreated#regionDataGrid1_ItemCreated
privatevoidDataGrid1_ItemCreated(objectsender,DataGridItemEventArgse)
{
for(inti=3;i<DataGrid1.Columns.Count-2;i++)//-2的意思是两个button列不用排序
{
if(i==0)continue;
if(e.Item.ItemIndex==-1)
{
if(DataGrid1.Columns[i].SortExpression==SortExpression)
{
TableCelltableCell
=e.Item.Cells[i];
Labellabel
=newLabel();
label.Font.Name
="webdings";
if(sort=="asc")
{
label.Text
="6";
}

else
{
label.Text
="5";
}

label.Width
=20;
tableCell.Controls.Add(label);
}

}

}

foreach(DataGridItemdiinthis.DataGrid1.Items)
 
{
if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem)
  
{
   ((Button)di.Cells[
9].Controls[0]).Attributes.Add("onclick","returnconfirm('确认删除此项吗?');");
  }

}

}



#endregion


property#regionproperty
privateDataTabledt
{
get
{
if(ViewState["dt"]!=null)
{
return(DataTable)ViewState["dt"];
}

else
{
returnnull;
}

}

set
{
ViewState[
"dt"]=value;
}

}

privatestringSortExpression
{
get
{
if(ViewState["SortExpression"]!=null&&ViewState["SortExpression"].ToString()!=string.Empty)
{
returnViewState["SortExpression"].ToString();
}

else
{
return"";
}

}

set
{
ViewState[
"SortExpression"]=value;
}

}

privatestringsort
{
get
{
if(ViewState["sort"]!=null&&ViewState["sort"].ToString()!=string.Empty)
{
returnViewState["sort"].ToString();
}

else
{
return"";
}

}

set
{
ViewState[
"sort"]=value;
}

}

#endregion


Edit#regionEdit
protectedvoidEdit(objectsender,DataGridCommandEventArgse)
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
DataBind();
}

#endregion


Cancel#regionCancel
protectedvoidCancel(objectsender,DataGridCommandEventArgse)
{
this.DataGrid1.EditItemIndex=-1;
DataBind();
}

#endregion


Update#regionUpdate
protectedvoidUpdate(objectsender,DataGridCommandEventArgse)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
SqlConnectionconn
=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommandcomm
=newSqlCommand("updatetestgridsetUserName=@UserName,Country=@province,State=@city,Enabled=@EnabledwhereUserID=@UserID",conn);
SqlParameterparm1
=newSqlParameter("@UserName",SqlDbType.NVarChar,50);
parm1.Value
=((TextBox)e.Item.FindControl("UserName")).Text;

SqlParameterparm2
=newSqlParameter("@province",SqlDbType.NVarChar,50);
parm2.Value
=((DropDownList)e.Item.FindControl("province")).SelectedValue;

SqlParameterparm3
=newSqlParameter("@city",SqlDbType.NVarChar,50);
parm3.Value
=((DropDownList)e.Item.FindControl("city")).SelectedValue;

SqlParameterparm4
=newSqlParameter("@Enabled",SqlDbType.Bit);
parm4.Value
=((CheckBox)e.Item.FindControl("chkenabled")).Checked;


SqlParameterparm5
=newSqlParameter("@UserID",SqlDbType.Int);
parm5.Value
=this.DataGrid1.DataKeys[e.Item.ItemIndex];

comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
comm.Parameters.Add(parm4);
comm.Parameters.Add(parm5);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
this.DataGrid1.EditItemIndex=-1;
DataBind();
}

}

#endregion


Deleteevent#regionDeleteevent
protectedvoidDelete(objectsender,DataGridCommandEventArgse)
{
delete(
this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
}

#endregion


ddlpovince_SelectedIndexChanged#regionddlpovince_SelectedIndexChanged
publicvoidddlpovince_SelectedIndexChanged(objectsender,EventArgse)
{
DropDownListddlpovince
=senderasDropDownList;
if(ddlpovince.SelectedIndex!=-1)
{
DropDownListddlcity
=((Control)(((Control)sender)).Parent).FindControl("city")asDropDownList;
stringsqlcity="select*fromcitywherefather='"+ddlpovince.SelectedValue+"'";
DataSetdscity
=GetDataSet(sqlcity);
ddlcity.DataSource
=dscity;
ddlcity.DataTextField
="city";
ddlcity.DataValueField
="cityID";
ddlcity.DataBind();
}

}

#endregion


btndelete_Click#regionbtndelete_Click
privatevoidbtndelete_Click(objectsender,System.EventArgse)
{
string[]delid=this.hiduserid.Value.Split(',');
for(intm=0;m<delid.Length;m++)
{
delete(delid[m]);
}

}

#endregion


delete#regiondelete
privatevoiddelete(stringid)
{
SqlConnectionconn
=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommandcomm
=newSqlCommand("deletefromtestgridwhereUserID=@UserID",conn);
SqlParameterparm1
=newSqlParameter("@UserID",SqlDbType.Int);
parm1.Value
=Convert.ToInt32(id);
comm.Parameters.Add(parm1);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataBind();
}

#endregion

}
3.数据库教本(或下载真实数据 /Files/singlepine/area.rar)
if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[TestGrid] ' ) and OBJECTPROPERTY (id,N ' IsUserTable ' ) = 1 )
drop table [ dbo ] . [ TestGrid ]
GO

if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[city] ' ) and OBJECTPROPERTY (id,N ' IsUserTable ' ) = 1 )
drop table [ dbo ] . [ city ]
GO

if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[povince] ' ) and OBJECTPROPERTY (id,N ' IsUserTable ' ) = 1 )
drop table [ dbo ] . [ povince ]
GO

CREATE TABLE [ dbo ] . [ TestGrid ] (
[ UserID ] [ int ] NOT NULL ,
[ UserName ] [ nvarchar ] ( 50 )COLLATEChinese_PRC_CI_AS NULL ,
[ Country ] [ nvarchar ] ( 50 )COLLATEChinese_PRC_CI_AS NULL ,
[ State ] [ nvarchar ] ( 50 )COLLATEChinese_PRC_CI_AS NULL ,
[ Enabled ] [ bit ] NULL
)
ON [ PRIMARY ]
GO

CREATE TABLE [ dbo ] . [ city ] (
[ id ] [ int ] NOT NULL ,
[ cityID ] [ nvarchar ] ( 6 )COLLATEChinese_PRC_CI_AS NULL ,
[ city ] [ nvarchar ] ( 50 )COLLATEChinese_PRC_CI_AS NULL ,
[ father ] [ nvarchar ] ( 6 )COLLATEChinese_PRC_CI_AS NULL
)
ON [ PRIMARY ]
GO

CREATE TABLE [ dbo ] . [ povince ] (
[ id ] [ int ] NOT NULL ,
[ provinceID ] [ nvarchar ] ( 6 )COLLATEChinese_PRC_CI_AS NULL ,
[ province ] [ nvarchar ] ( 40 )COLLATEChinese_PRC_CI_AS NULL
)
ON [ PRIMARY ]
GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值