【问题标题】:Getting data from GridView on Button_Click在 Button_Click 上从 GridView 获取数据
【发布时间】:2012-02-05 17:51:52
【问题描述】:

我的问题是:

我有一个 GridView,它绑定到带有 CheckBoxes 列的声明 DTO 对象列表。另外,我在页面上有一个“保存”按钮。我的任务是获取所有行,检查 CheckBox 并获取包含的数据。不幸的是,Button1_Click 上的 row.DataItem = null,因为我正在使用 if(!IsPostBack) gw.DataBind() 语句(否则,我无法获得 CheckBox 状态)。你能给我解决我的问题的最佳实践吗?

提前谢谢你!

【问题讨论】:

    标签: asp.net gridview postback buttonclick dataitem


    【解决方案1】:

    如果您选择if(!IsPostBack) --> gw.DataBind(),这将重新初始化您的GridView,并且复选框将再次设置为未选中。

    在您的情况下,在 Button1_Click 事件中,您可以遍历 GridView 上的每个 DataRow 并找到选中复选框的行并获取所有选定的行数据。

    foreach (GridViewRow gvRow in gw.Rows) {
    // Find your checkbox
        CheckBox chkBox = (CheckBox)gvRow.FindControl("checkBox");
    
        if (chkBox.Checked) {
        // Get your values 
            string value1 = gvRow.Cells[1].Text;
            string value2 = gvRow.Cells[2].Text;
            // etc...
        }
    }
    

    【讨论】:

    • 这就是我被卡住的原因。如果每次页面加载时我都进行 DataBind,则无法获取 CheckBox 值。如果我使用 !IsPostBack -> row.DataItem == null ,那么我无法获取行的数据。
    • 请解释一下,我应该如何获取所有行数据?
    • gvRow.Cells[1].ToString() 给了我“System.Web.UI.WebControls.DataControlFieldCell”,而不是包含值。
    • 我尝试使用 foreach(var row in GridView.Rows) var myObject=row.DataItem;但是 DataItem = null
    • 应该是 gvRow.Cells[1].Text,抱歉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多