Asp.net 单击按钮从GridView获取数据

Asp.net 单击按钮从GridView获取数据,asp.net,gridview,postback,buttonclick,dataitem,Asp.net,Gridview,Postback,Buttonclick,Dataitem,我的问题是: 我有一个GridView,它绑定到声明的DTO对象列表,并带有一列复选框。另外,我在页面上有一个“保存”按钮。我的任务是获取所有行,选中复选框并获取包含的数据。不幸的是,单击按钮1时,row.DataItem=null,因为我使用的是if(!IsPostBack)gw.DataBind()语句(否则,我无法获取复选框状态)。你能告诉我解决问题的最佳方法吗 提前谢谢你 如果执行If(!IsPostBack)-->gw.DataBind(),将重新初始化GridView,并且复选框将再

我的问题是:

我有一个GridView,它绑定到声明的DTO对象列表,并带有一列复选框。另外,我在页面上有一个“保存”按钮。我的任务是获取所有行,选中复选框并获取包含的数据。不幸的是,单击按钮1时,row.DataItem=null,因为我使用的是if(!IsPostBack)gw.DataBind()语句(否则,我无法获取复选框状态)。你能告诉我解决问题的最佳方法吗

提前谢谢你

如果执行
If(!IsPostBack)-->gw.DataBind()
,将重新初始化
GridView
,并且复选框将再次设置为未选中

在您的情况下,在
按钮1\u单击
事件中,您可以在
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...
    }
}

这就是我被困住的原因。如果每次加载页面时都进行数据绑定,则无法获取复选框值。如果我用!IsPostBack->row.DataItem==null,因此我无法获取行的数据。请解释一下,我应该如何获取所有行数据?gvRow.Cells[1]。ToString()给出的是“System.Web.UI.WebControls.DataControlFieldCell”,而不是包含的值。我尝试使用foreach(GridView.Rows中的var row)var myObject=row.DataItem;但是DataItem=null它应该是gvRow.Cells[1].Text,对不起