用List绑定GridView的简单辅助类

简介:

使用前提,知道gridview通用的扩展方法,知道反射的知识。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections;
using System.ComponentModel;
using System.Collections.Generic;
using System.Reflection;

/// <summary>
///MyGridView 的摘要说明
/// </summary>
public class MyGridView
{
    GridView gv;
    IList list;
    Type t;
    object obj;
    public MyGridView( GridView gv,IList list,object obj)
    {
        this.gv = gv;
        this.list = list;
        this.obj = obj;
        if (list.Count > 0)
        {
            t = list[0].GetType();
        }
    }


    #region BindEvents

    public void BindEvents()
    {
        gv.RowEditing += new GridViewEditEventHandler(gv_RowEditing);
        gv.RowCancelingEdit += new GridViewCancelEditEventHandler(gv_RowCancelingEdit);
        gv.RowDeleting += new GridViewDeleteEventHandler(gv_RowDeleting);
        gv.RowUpdating += new GridViewUpdateEventHandler(gv_RowUpdating);
    }

    void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int i = 0;
        PropertyInfo[] proInfo = t.GetProperties();
        foreach (TableCell cell in gv.Rows[e.RowIndex].Cells)
        {
            TextBox txtBox = cell.Controls[0] as TextBox;
            if (txtBox != null)
            {
                proInfo[i].SetValue(list[e.RowIndex], txtBox.Text, null);
            }
            
            i++;
        }
        obj.GetType().GetMethod("Save").Invoke(obj, null);
        
        gv.EditIndex = -1;
    }

    void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        list.RemoveAt(e.RowIndex);
    }

    void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gv.EditIndex = -1;
    }

    void gv_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gv.EditIndex = e.NewEditIndex;
    }
    #endregion

    public void BindData()
    {
        gv.DataSource = list;
        gv.DataBind();
    }
}
本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2009/06/07/1497961.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
3月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
3月前
|
编译器
【Bug记录】list模拟实现const迭代器类
【Bug记录】list模拟实现const迭代器类
List集合的实现类
List集合的实现类
|
6月前
|
存储 安全 Java
Java的List、Set、Queue等接口及其实现类的技术性文章
Java的List、Set、Queue等接口及其实现类的技术性文章
37 1
|
6月前
|
存储 安全 Java
Java list set map等接口及其实现类
Java list set map等接口及其实现类
|
6月前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
45 0
|
存储 算法 Java
java集合框架------Collection接口,List接口与实现类,Set接口与实现类
java集合框架------Collection接口,List接口与实现类,Set接口与实现类
|
6月前
|
C++
【C++练级之路】【Lv.8】【STL】list类的模拟实现
【C++练级之路】【Lv.8】【STL】list类的模拟实现
|
6月前
|
存储 安全 Java
深入解析Java List接口及其实现类
深入解析Java List接口及其实现类
123 1