關於DEV15.1版本的GridView
DEV獲取選中行經常這樣用
var RowIndex=gridview1.getselectrows();
forecase(var item In RowIndex)
{
var RowModel= gridview1.getrow(item) as T;
處理代碼省略
}
gridview1.RefreshData();
這樣處理就界面一同刷新了,但是我每次都要這樣用 , 於是我封裝了這一段代碼
public static Dictionary<int, T> GetSelectRowDic<T>(GridView gridView) where T : class ,IMemberwiseClone<T>, new()
{
Dictionary<int, T> rowDictionary = new Dictionary<int, T>();
int[] RowIndex = gridView.GetSelectedRows();
if (!RowIndex.Any())
return null;
foreach (var item in RowIndex)
{
if (item < 0)
{
continue;
}
var RowModel = gridView.GetRow(item) as T;
rowDictionary.Add(item, RowModel.ShallowCopy());
}
return rowDictionary;
}
/// <summary>
/// 獲取選中行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="gridView"></param>
/// <returns></returns>
public static List<T> GetSelectRow<T>(GridView gridView) where T : class, IMemberwiseClone<T>, new()
{
return GetSelectRowDic<T>(gridView).Select(p => p.Value).ToList();
}
接口
namespace SJFOOD3.IModel
{
public interface IMemberwiseClone<T> where T : class ,new()
{
/// <summary>
/// 淺表複製
/// </summary>
/// <returns></returns>
T ShallowCopy();
}
}
接口實現
public vw_role_action_role ShallowCopy()
{
return (vw_role_action_role)this.MemberwiseClone();
}
使用方法:
var RowList = GridViewSetting.GetSelectRow<vw_role_action_role>(VW_Role_Action);
但是這樣我獲取到的List還是不能隨著當前的值改變,而去改變數據源 , 使用 gridview1.RefreshData(); 刷新刷新不了,請問是否有解決方案? 在不升級DEV的情況下