2017-04-12 65 views
0

我正在构建一个使用我的GridView的进程,该进程允许用户提供一个编辑并将其保存到多个记录。到目前为止,我已经到了这个规划点,但不知道如何最好的方式来构建一个包含在这个编辑中的记录ID数组。从GridView C中的CheckoBxes构建数组#

这里是我踢周围现在...

  1. 模板字段添加到我的GridVeiw提供一个复选框。 (完成!)
  2. 为网格中的所有列标题提供一个DropDownList,并将源表列名作为DDL中的条目值。
  3. 在DDL上选择一个项目后,OnSelectedIndexChanged会抛出一个编辑窗口来编辑DDL中所选列的内容。
  4. '保存'后,CodeBehind将旋转数组,将相同的值写入下拉列表中所选列中的每一行。
    • 考虑到这一点,我相信我会捕获数组中第一条记录中焦点列的数据,以便提供编辑列中现有内容的方法。除了在GridView复选框

一切将在GridView的外部,并且完成在GridView将被重绘清除的复选框并在被修改的那些细胞显示更新列中的值时被处理。

为了便于理解什么我摆弄这里我提供了左侧的GridView的的屏幕截图:建设从复选框数组 enter image description here

的思考?

UPDATE 17年4月13日下午1时美国中部 添加的代码我增加接近每例#2以下的复选框数组的人口...

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())); 
       } 
      } 
     } 
    } 

回答

0

可以绑定在Rowdatabound(选项1)时或在Gridview绑定onclick上保存按钮时,复选框的数组创建网格行的循环(选项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 

     } 
    } 
} 

希望这有助于。

+0

我认为选项2对我来说会更有意义。我会给它一个镜头,让你知道!谢谢PJS –

+0

@KenCarter:提供的解决方案是否适用于您? – PJS

+0

我正在处理您提供给我的第二个示例,并在“if(chk.Checked)”行上触击了一个空引用错误。带头吃午饭,但会回来试图找出为什么我在这里得到一个空。使用你的例子,但当然已将GridView1引用更改为我的ActVulListGV的GridView ID。我已经添加了一个代码块,说明我在代码后面添加了什么,记为UPDATE 04/13/17 1PM Central US –