急急...急晕了的一个问题 DataList
datalist 里有两个ImageButton ,commandname分别设为 "delete "和 "eidt ",后台加处理函数datalst1_itemCommand(object source, System.Web.UI.WebCOntrols.DataListCommandEventArgs e)
{
int id = (int)Datalist.DataKeys[e.item.itemindex];
if(e.commandname== "delete ")
{
//进行删除操作
}
if(e.commandname== "edit ")
{
//进行更新操作
}
}
在显示层,Datalst的OnItemCommand= "datalst1_itemCommand "
但问题是,程序根本不执行!!设置断点运行,根本不执行datalst1_itemCommand函数里的行!!!
晕啊~~急急...快疯了啊
------解决方案--------------------http://rainfeet.spaces.live.com/
可以参考一下
------解决方案--------------------你是否在Page_Load事件里把绑定列表放在(!IsPstBack)里面了!
而且同时用PlaceHolder载入了一个.ascx形式的Skin控件
如果是,
请参照下面的示例注释该条件
// if(!IsPostBack)
// {
AgrExibition.Buyer.Framework.Components.BuyerCollection sc=AgrExibition.Buyer.Framework.Data.DataDTOProvider.GetBuyerReturnCollectionWithCondition(word.Trim(),pager.PageIndex,pager.PageSize,sort,0, " ", " ", " ", " ",years,inviter,exbiname, " ");
dataGrid.DataSource=sc;
dataGrid.DataBind();
if(sc.MaxItems> 0)
{
pager.ItemCount=sc.MaxItems;
}
else
{
pager.Visible=false;
}
//}
------解决方案--------------------事件已丢失
加入datalist.ItemCommand+=new DataListCommandEventHandler(datalst1_itemCommand)
另外你的程序写的确实很让人郁闷
datalist 里有两个ImageButton ,commandname分别设为 "delete "和 "eidt ",后台加处理函数
//一处是edit 一处是eidt,那个edit分支永远不会走到
datalst1_itemCommand(object source, System.Web.UI.WebCOntrols.DataListCommandEventArgs
e)
//不知道你怎么copy过来的WebCOntrols也能出来,一般引入System.Web.UI.WebControls,类名过长影响阅读
{
//如果引发itemcommand的是headerTemplate或者footerTemplate,这儿会抛出一个异常,因为索引不能从-1开始
int id = (int)Datalist.DataKeys[e.item.itemindex];
//if ... if 应改为if ...else if...虽然不会有一个字符串又等于delete又等于edit但如//commandname== "delete " 执行完if分支后会继续判断下一个if.选用else if更高效
if(e.commandname== "delete ")
{
//进行删除操作
}
if(e.commandname== "edit ")
{
//进行更新操作
}
}
------解决方案--------------------加入datalist.ItemCommand+=new DataListCommandEventHandler(datalst1_itemCommand)正解
------解决方案--------------------另外,页面里两个元素有没有加 CommandName= "Delete " 和 CommandName= "Edit "
------解决方案--------------------if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (e.CommandName == "edit ")
{
操作
}
}
------解决方案--------------------page_load里面
有没有
if(!IsPostBack)
{
DataList绑定;
}
------解决方案--------------------估计 datalist丢失了事件,常见的事情,把OnRowCommand= "GridView_RowCommand " 这个看看有么有
------解决方案--------------------还有就是如果按钮的名字使用了 delete ,edit,就会使用默认的事件,会执行 deletecommand, editcommand 这两个事件。你自己看看是哪个原因。