扩展GridView控件(3) – 根据按钮的CommandName设置其客户端属性

扩展GridView控件(3) – 根据按钮的CommandName设置其客户端属性作者:webabcd/*正式版的实现 开始*/介绍扩展GridView控件:根据按钮的CommandName设置其客户端属性使用方法(设置ClientButtons集合属性):BoundCommandName-需要绑定的CommandNameAttributeKey-属性的名称AttributeValue-属性的值(两个占位符:{0}-CommandArgument;{1}

作者:
webabcd

/*
正式版的实现 开始
*/

介绍

扩展GridView控件:

根据按钮的CommandName设置其客户端属性

使用方法(设置ClientButtons集合属性):

BoundCommandName – 需要绑定的CommandName

AttributeKey – 属性的名称

AttributeValue – 属性的值(两个占位符:{0} – CommandArgument;{1} – Text)

Position – 属性的值的位置

关键代码

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
using
 System;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Collections.Generic;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Text;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.UI.WebControls;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.UI;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

namespace
 YYControls.SmartGridViewFunction
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// 扩展功能:根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// </summary>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    public class ClientButtonFunction : ExtendFunction
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 构造函数
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public ClientButtonFunction()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            : 
base()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 构造函数
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”sgv”>SmartGridView对象</param>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public ClientButtonFunction(SmartGridView sgv)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            : 
base(sgv)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 扩展功能的实现
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        protected override void Execute()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
this._sgv.RowDataBoundCell += new SmartGridView.RowDataBoundCellHandler(_sgv_RowDataBoundCell);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// SmartGridView的RowDataBoundCell事件
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”sender”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”gvtc”></param>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        void _sgv_RowDataBoundCell(object sender, GridViewTableCell gvtc)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            TableCell tc 
= gvtc.TableCell;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
// TableCell里的每个Control
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
            foreach (Control c in tc.Controls)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
// 如果控件继承自接口IButtonControl
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                if (c is IButtonControl)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    
// 从用户定义的ClientButtons集合中分解出ClientButton
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                    foreach (ClientButton cb in this._sgv.ClientButtons)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        
// 如果在ClientButtons中绑定了该按钮的CommandName
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                        if (((IButtonControl)c).CommandName == cb.BoundCommandName)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            
// 替换占位符{0}-CommandArgument;{1}-Text
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                            string attributeValue = 
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                String.Format(
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                    cb.AttributeValue,
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                    ((IButtonControl)c).CommandArgument,
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                    ((IButtonControl)c).Text);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            
// 设置按钮的客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                            YYControls.Helper.Common.SetAttribute(
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                (IAttributeAccessor)c, 
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                cb.AttributeKey, 
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                attributeValue, 
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                cb.Position);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            
break;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性}


扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

/*
正式版的实现 结束
*/
/*
测试版的实现 开始
*/

介绍

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

控件开发

1、新建一个继承自GridView的类。

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
/// 继承自GridView
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
/// </summary>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
[ToolboxData(
@”
<{0}:SmartGridView runat=’server’></{0}:SmartGridView>

)]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

public
 
class
 SmartGridView : GridView
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性}

2、新建一个ConfirmButton类,有两个属性

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    

/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// ConfirmButton 的摘要说明。
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// </summary>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    [ToolboxItem(
false
)]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    [TypeConverter(

typeof
(ConfirmButtonConverter))]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    

public
 
class
 ConfirmButton
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
private string _commandName;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 按钮的CommandName
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public string CommandName
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
get return this._commandName; }
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
set this._commandName = value; }
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
private string _confirmMessage;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 确认框弹出的信息
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public string ConfirmMessage
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
get return this._confirmMessage; }
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
set this._confirmMessage = value; }
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    }

3、新建一个继承自CollectionBase的类ConfirmButtons

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    

/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// ProjectGroups 的摘要说明。
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// 注意要继承自CollectionBase
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// </summary>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    [
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    ToolboxItem(

false
),
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    ParseChildren(

true
)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    ]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    

public
 
class
 ConfirmButtons : CollectionBase
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 构造函数
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public ConfirmButtons()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            : 
base()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 实现IList接口
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 获取或设置指定索引处的元素。
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”index”>要获得或设置的元素从零开始的索引</param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <returns></returns>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public ConfirmButton this[int index]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
get
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
return (ConfirmButton)base.List[index];
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
set
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
base.List[index] = (ConfirmButton)value;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 实现IList接口
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 将某项添加到 System.Collections.IList 中。
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”item”>要添加到 System.Collections.IList 的 System.Object。</param>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public void Add(ConfirmButton item)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
base.List.Add(item);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 实现IList接口
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 从 System.Collections.IList 中移除特定对象的第一个匹配项。
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”index”>要从 System.Collections.IList 移除的 System.Object</param>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public void Remove(int index)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
if (index > 1 && index < base.Count)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
base.List.RemoveAt(index);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    }

4、新建一个继承自ExpandableObjectConverter的类ConfirmButtonConverter

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    

/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// 类型转换器
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
/// </summary>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    
public
 
class
 ConfirmButtonConverter : ExpandableObjectConverter
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 返回值能否将ConfirmButton类型转换为String类型
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”context”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”destinationType”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <returns></returns>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
if (destinationType == typeof(string))
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
return true;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
return base.CanConvertTo(context, destinationType);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 将ConfirmButton类型转换为String类型
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”context”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”culture”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”value”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”destinationType”></param>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <returns></returns>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
object value, Type destinationType)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
if (value != null)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
if (!(value is YYControls.SmartGridView.ConfirmButton))
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    
throw new ArgumentException(
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        
无效的ConfirmButtonvalue);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
if (destinationType.Equals(typeof(string)))
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
if (value == null)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    
return String.Empty;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
return ConfirmButton;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
return base.ConvertTo(context, culture, value, destinationType);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    }

5、在继承自GridView的类中加一个复杂对象属性,该复杂对象就是第3步创建的那个ConfirmButtons

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
        
private
 ConfirmButtons _confirmButtons;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        


/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// 确认按钮集合
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
        [
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        PersistenceMode(PersistenceMode.InnerProperty),
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        Description(


确认按钮集合,确认按钮的CommandName和提示信息

),
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        Category(


扩展

)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        ]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        

public
 
virtual
 ConfirmButtons ConfirmButtons
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
get
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
if (_confirmButtons == null)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    _confirmButtons 
= new ConfirmButtons();
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
return _confirmButtons;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }


扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

6、重写OnRowDataBound实现单击命令按钮弹出确认框的功能。主要是给按钮增加一个客户端的onclick事件。

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
        

/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// OnRowDataBound
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// </summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
/// <param name=”e”></param>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
        
protected
 
override
 
void
 OnRowDataBound(GridViewRowEventArgs e)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
if (e.Row.RowType == DataControlRowType.DataRow)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
if (this._confirmButtons != null)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    
// GridViewRow的每个TableCell
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                    foreach (TableCell tc in e.Row.Cells)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        
// TableCell里的每个Control
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                        foreach (Control c in tc.Controls)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            
// 如果控件继承自接口IButtonControl
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                            if (c.GetType().GetInterface(IButtonControl!= null && c.GetType().GetInterface(IButtonControl).Equals(typeof(IButtonControl)))
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                
// 从用户定义的ConfirmButtons集合中分解出ConfirmButton
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                                foreach (ConfirmButton cb in _confirmButtons)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                    
// 如果发现的按钮的CommandName在ConfirmButtons有定义的话
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                                    if (((IButtonControl)c).CommandName == cb.CommandName)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                    
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                        
// 增加确认框属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
                                        ((IAttributeAccessor)c).SetAttribute(onclickreturn confirm(‘ + cb.ConfirmMessage + ‘));
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                        
break;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                    }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                                }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            
base.OnRowDataBound(e);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }


扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

控件使用

添加这个控件到工具箱里,然后拖拽到webform上,设置其ConfirmButtons属性即可。CommandName是命令按钮的CommandName属性;ConfirmMessage是弹出的确认框所显示的文字。

ObjData.cs

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
using
 System;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Data;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Configuration;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.Security;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.UI;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.UI.WebControls;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.UI.WebControls.WebParts;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.Web.UI.HtmlControls;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

using
 System.ComponentModel;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性


/// <summary>
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
/// OjbData 的摘要说明
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
/// </summary>



扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
public
 
class
 OjbData
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性


{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
public OjbData()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
//
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
// TODO: 在此处添加构造函数逻辑
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
//
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
    }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    [DataObjectMethod(DataObjectMethodType.Select, 
true)]
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
public DataTable Select()
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        DataTable dt 
= new DataTable();
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        dt.Columns.Add(
notypeof(string));
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        dt.Columns.Add(
nametypeof(string));
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
for (int i = 0; i < 30; i++)
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
{

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            DataRow dr 
= dt.NewRow();
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            dr[
0= no + i.ToString().PadLeft(20);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            dr[
1= name + i.ToString().PadLeft(20);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            dt.Rows.Add(dr);
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        
return dt;
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    }

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性}


扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

Default.aspx

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
<%

@ Page Language=C# AutoEventWireup=true CodeFile=Default.aspx.cs Inherits=_Default 
%>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性
扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

<!
DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

<
html 
xmlns
=”http://www.w3.org/1999/xhtml”
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

<
head 
runat
=”server”
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    

<
title
>
无标题页
</
title
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

</
head
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

<
body
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    

<
form 
id
=”form1″
 runat
=”server”
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        

<
div
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            

&nbsp;

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            

<
yyc:SmartGridView 
ID
=”SmartGridView1″
 runat
=”server”
 AutoGenerateColumns
=”false”

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                DataSourceID

=”ObjectDataSource1″
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                

<
Columns
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    

<
asp:BoundField 
DataField
=”no”
 HeaderText
=”序号”
 SortExpression
=”no”
 
/>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    

<
asp:BoundField 
DataField
=”name”
 HeaderText
=”名称”
 SortExpression
=”name”
 
/>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    

<
asp:ButtonField 
CommandName
=”ConfirmTest”
 Text
=”确认按钮测试”
 
/>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                

</
Columns
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                

<
ConfirmButtons
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                    

<
yyc:ConfirmButton 
ConfirmMessage
=”确认删除吗?”
 CommandName
=”ConfirmTest”
></
yyc:ConfirmButton
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                

</
ConfirmButtons
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            

</
yyc:SmartGridView
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性            

<
asp:ObjectDataSource 
ID
=”ObjectDataSource1″
 runat
=”server”
 SelectMethod
=”Select”

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性                TypeName

=”OjbData”
></
asp:ObjectDataSource
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性        

</
div
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性    

</
form
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

</
body
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

</
html
>

扩展GridView控件(3) - 根据按钮的CommandName设置其客户端属性

/*
测试版的实现 结束
*/

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35658.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注