GridView控件单击命令按钮弹出确认框

给按钮增加单击弹出确认框的功能是经常要用到的,我们一般是通过在RowDataBound事件里编码的方式实现,麻烦,所以扩展一下。


控件开发
1、新建一个继承自GridView的类。
/**/ ///<summary>
///继承自GridView
///</summary>

[ToolboxData( @" <{0}:SmartGridViewrunat='server'></{0}:SmartGridView> " )]
public class SmartGridView:GridView
{
}

2、新建一个ConfirmButton类,有两个属性
/**/ ///<summary>
///ConfirmButton的摘要说明。
///</summary>

[ToolboxItem( false )]
[TypeConverter(
typeof (ConfirmButtonConverter))]
public class ConfirmButton
{
privatestring_commandName;
/**////<summary>
///按钮的CommandName
///</summary>

publicstringCommandName
{
get{returnthis._commandName;}
set{this._commandName=value;}
}


privatestring_confirmMessage;
/**////<summary>
///确认框弹出的信息
///</summary>

publicstringConfirmMessage
{
get{returnthis._confirmMessage;}
set{this._confirmMessage=value;}
}

}

3、新建一个继承自CollectionBase的类ConfirmButtons
/**/ ///<summary>
///ProjectGroups的摘要说明。
///注意要继承自CollectionBase
///</summary>

[
ToolboxItem(
false ),
ParseChildren(
true )
]
public class ConfirmButtons:CollectionBase
{
/**////<summary>
///构造函数
///</summary>

publicConfirmButtons()
:
base()
{
}


/**////<summary>
///实现IList接口
///获取或设置指定索引处的元素。
///</summary>
///<paramname="index">要获得或设置的元素从零开始的索引</param>
///<returns></returns>

publicConfirmButtonthis[intindex]
{
get
{
return(ConfirmButton)base.List[index];
}

set
{
base.List[index]=(ConfirmButton)value;
}

}


/**////<summary>
///实现IList接口
///将某项添加到System.Collections.IList中。
///</summary>
///<paramname="item">要添加到System.Collections.IList的System.Object。</param>

publicvoidAdd(ConfirmButtonitem)
{
base.List.Add(item);
}


/**////<summary>
///实现IList接口
///从System.Collections.IList中移除特定对象的第一个匹配项。
///</summary>
///<paramname="index">要从System.Collections.IList移除的System.Object</param>

publicvoidRemove(intindex)
{
if(index>-1&&index<base.Count)
{
base.List.RemoveAt(index);
}

}

}

4、新建一个继承自ExpandableObjectConverter的类ConfirmButtonConverter
/**/ ///<summary>
///类型转换器
///</summary>

public class ConfirmButtonConverter:ExpandableObjectConverter
{
/**////<summary>
///返回值能否将ConfirmButton类型转换为String类型
///</summary>
///<paramname="context"></param>
///<paramname="destinationType"></param>
///<returns></returns>

publicoverrideboolCanConvertTo(ITypeDescriptorContextcontext,TypedestinationType)
{
if(destinationType==typeof(string))
{
returntrue;
}

returnbase.CanConvertTo(context,destinationType);
}


/**////<summary>
///将ConfirmButton类型转换为String类型
///</summary>
///<paramname="context"></param>
///<paramname="culture"></param>
///<paramname="value"></param>
///<paramname="destinationType"></param>
///<returns></returns>

publicoverrideobjectConvertTo(ITypeDescriptorContextcontext,CultureInfoculture,
objectvalue,TypedestinationType)
{
if(value!=null)
{
if(!(valueisYYControls.SmartGridView.ConfirmButton))
{
thrownewArgumentException(
"无效的ConfirmButton","value");
}

}


if(destinationType.Equals(typeof(string)))
{
if(value==null)
{
returnString.Empty;
}

return"ConfirmButton";
}

returnbase.ConvertTo(context,culture,value,destinationType);
}

}

5、在继承自GridView的类中加一个复杂对象属性,该复杂对象就是第3步创建的那个ConfirmButtons
private ConfirmButtons_confirmButtons;
/**/ ///<summary>
///确认按钮集合
///</summary>

[
PersistenceMode(PersistenceMode.InnerProperty),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
Description(
" 确认按钮集合,确认按钮的CommandName和提示信息 " ),
Category(
" 扩展 " )
]
public virtual ConfirmButtonsConfirmButtons
{
get
{
if(_confirmButtons==null)
{
_confirmButtons
=newConfirmButtons();
}

return_confirmButtons;
}

}


6、重写OnRowDataBound实现单击命令按钮弹出确认框的功能。主要是给按钮增加一个客户端的onclick事件。
/**/ ///<summary>
///OnRowDataBound
///</summary>
///<paramname="e"></param>

protected override void OnRowDataBound(GridViewRowEventArgse)
{
if(e.Row.RowTy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值