从gridview C#中的复选框构建数组

时间:2017-04-12 15:21:51

标签: c# asp.net arrays gridview checkbox

我正在使用gridview构建一个流程,允许用户提供一个编辑并将其保存到多个记录中。到目前为止,我已经达到了这一点,但不确定如何构建一个包含在此编辑中的记录ID数组的最佳方法。

这就是我现在正在踢的......

  1. 向我的gridview添加一个模板字段,该字段提供一个复选框(完成!)
  2. 为网格中的所有列标题提供DropDownList,并将源表列名称关联为DDL中条目的值。
  3. 在DDL上选择一个项目后,OnSelectedIndexChanged会抛出一个编辑窗口来编辑DDL中所选列的内容。
  4. 在' Save' CodeBehind会旋转数组,向下拉列表中选择的列中的每一行写入相同的值。
    • 考虑到这一点,我相信我会在数组的第一条记录中捕获焦点列中的数据,以便提供编辑列中现有内容的方法。
  5. 除了GridView中的CheckBoxes之外的所有内容都将在GridView之外处理,完成后将重新绘制GridView,清除CheckBox并在已修改的单元格中显示更新的列值。

    为了理解我在这里修补的内容,我提供了GridView左侧的屏幕截图:

    enter image description here

    关于从CheckBoxes构建数组的想法?

    更新04/13/17下午1点美国中部

    添加我添加的代码,从下面的示例#2的CheckBox中接近数组的数量......

    protected void ColumnSelectDDL_TextChanged(object sender, EventArgs e)
    {
        foreach (GridViewRow row in ActVulListGV.Rows)
        {
            var ri = -1;
    
            if (row.RowType == DataControlRowType.DataRow)
            {
                CheckBox chk = (row.Cells[0].FindControl("chkid") as CheckBox);
    
                if (chk.Checked)
                {
                    // Create and append your array here
                    var recnumbers = new int[0];
                    ++ri;
                      {
                         Label REC = (row.Cells[1].FindControl("RecID") as Label);
                         recnumbers[ri] = Convert.ToInt32(REC.Text);
                      }
                       recnumbers.ToList().ForEach(i => Console.WriteLine(i.ToString()));
                  }
              }
          }
      }
    

1 个答案:

答案 0 :(得分:0)

您可以在Rowdatabound(选项1)时绑定复选框数组,或者在Gridview绑定后单击“保存”按钮创建网格行循环(选项2)。

选项1:

 protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
  {

   if (e.Row.RowType == DataControlRowType.DataRow) {


     CheckBox chk = (row.Cells[0].FindControl("chkid") as CheckBox);
        if (chk.Checked)
        {

         //Create the hiddenfield or viewstate which you can access page level.
        }
     }
 }

选项2:

foreach (GridViewRow row in GridView1.Rows)
{
    if (row.RowType == DataControlRowType.DataRow)
    {
        CheckBox chk = (row.Cells[0].FindControl("chkid") as CheckBox);
        if (chk.Checked)
        {

          // Create and append your array here

        }
    }
}

希望这有帮助。