|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然…… 提及在DataGrid中增加新行,ASP.NET开辟的年夜牛人物:DinoEsposito,他的《构建WEB办理计划--使用ASP.NET和ADO.NET》一书中供应了和以上两位相似的办法,可是Dino又加了些功效,起首就是”增加新行“这个LinkButton放在页脚,同时这个LinkButton在分页到最初一页时才启用,由于在其他页面增加新行是不成取的;其次是增加的行假如引发分页,就切换到新页并进进此行的编纂形式。
前一段工夫,我也利用了这个功效,发明仍旧存在两个成绩:
1.点击”增加新行“按钮编纂新行时,假如再次点击”增加新行“的话,这个刚增加的新行会酿成空缺,编纂形式会进进别的的新行。
2.在翻页时DataGrid的EditItemIndex没有恢复成-1,会形成其他页面不异索引的行也进进编纂形式。
因而就操刀稍稍修正了一下,办理了这两个成绩,最后的效果是如许的:
图一:不在最初一页时,增加新行按钮不成用
图二:在最初一页时,按钮才可用
图三:当新加行进进编纂形式后,按钮再次不成点击,作废后此新增行会删除,恢复到图二
页脚模板中的LinkButton:
以下为援用的内容:
<FooterTemplate>
<asp:LinkButtonid=lbAddNewRowrunat="server"CommandName="AddNewRow"Enabled="<%#IsEnableAddNewRow()%>">增加新行
</asp:LinkButton>
</FooterTemplate>
页面代码中IsEnableAddNewRow办法代码:
以下为援用的内容:
1protectedboolIsEnableAddNewRow()
2{
3//只要最初一页其实不在编纂形式时才启用增加新行功效
4return(dgData.CurrentPageIndex==dgData.PageCount-1&&dgData.EditItemIndex==-1);
5}
页面代码中ItemCommand事务代码:
以下为援用的内容:
1privatevoiddgData_ItemCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse)
2{
3if(e.CommandName=="AddNewRow")
4{
5//先在数据源增加新行,假如有主键字段,还必要思索主键字段的数据天生和最初更新时的提交
6LoadData();
7DataRownewRow=dsData.Tables[0].NewRow();
8dsData.Tables[0].Rows.Add(newRow);
9dgData.DataSource=dsData;
10Session["myData"]=dsData;
11//判别增加此行后是不是应当换页
12intcurrentIndex=dgData.Items.Count;
13if(currentIndex>=dgData.PageSize)
14{
15dgData.CurrentPageIndex++;
16currentIndex=0;
17}
18dgData.EditItemIndex=currentIndex;
19dgData.DataBind();
20dgData.Items[currentIndex].Attributes.Add("IsNewItem","True");
21}
22}
CancelCommand事务代码:
以下为援用的内容:
1privatevoiddgData_CancelCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse)
2{
3LoadData();
4//假如在新增行选择作废,则回绝增加此行
5if(e.Item.Attributes["IsNewItem"]!=null&&e.Item.Attributes["IsNewItem"]=="True")
6{
7dsData.RejectChanges();
8Session["myData"]=dsData;
9}
10dgData.EditItemIndex=-1;
11BindGrid(dgData.CurrentPageIndex);
12}
以上的例子我写了一个Demo,打包好的办理计划文件能够在这里下载(注重修正Web.config文件中的毗连字符串,数据会见代码在DataAccess类中)。
在写这篇Post的途中,有伴侣倡议在DataGrid的页脚为每一个字段安排一个文本框,然后再安排一个“增加此行”按钮,点击按钮后便可将行增加到DataGrid中,假如页脚没有做其他用处的话,这类体例也不掉为较好的办理计划。
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽! |
|