如何将字符串绑定到网格?

时间:2014-12-08 13:48:41

标签: c# asp.net gridview

我想根据另一个网格视图中的复选框选择在gridview中显示数据。下面给出的代码根据复选框选择从第一个gridview获取值。我想将这些值绑定到第二个网格中。帮我找一个合适的解决方案。谢谢。

代码:

protected void btnAssign_Click(object sender, EventArgs e)
   {
    foreach (GridViewRow row in GridView1.Rows)
       {
        if (row.RowType == DataControlRowType.DataRow)
            {
               CheckBox chkRow = (row.Cells[2].FindControl("CheckBox1") as CheckBox);
               if (chkRow.Checked)
                {
                    string[] EmpId = new string[] { row.Cells[0].Text };
                    string[] EmpName = new string[] { row.Cells[1].Text};

//我想根据复选框选择在gridview 2上显示emp id和emp名称。我能怎么做。帮我找一个合适的解决方案

                    GridView2.DataSource = EmpId;
                    GridView2.DataBind();
                }

            }

        }
   }

ASPX:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" ReadOnly="True" SortExpression="EmployeeID" />
<asp:BoundField DataField="FirstName" HeaderText="Employee Name" ReadOnly="True" SortExpression="FirstName" />


<asp:TemplateField HeaderText="Select" SortExpression="Select">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

<asp:GridView ID="GridView2" runat="server"> </asp:GridView>

下面给出的图像显示了基于下拉选择的网格视图中的数据。之后,我想选择一些行并单击assign,然后我必须在新的gridview中显示所选行。 图片:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您尚未定义代表所选员工的强类型,则可以创建一个词典来存储您选择的员工。完成对GridView1行的迭代以获取所选员工后,您可以使用字典作为GridView2的数据源并绑定到每个条目的键和值。

protected void btnAssign_Click(object sender, EventArgs e)
{
    Dictionary<int, string> selectedEmployees = new Dictionary<int, string>();
    foreach (GridViewRow row in GridView1.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
           CheckBox chkRow = (row.Cells[2].FindControl("CheckBox1") as CheckBox);
           if (chkRow.Checked)
            {
                selectedEmployees.Add(int.Parse(row.Cells[0].Text), row.Cells[1].Text);
            }
        }
    }

    if (selectedEmployees.Any())
    {
        gridView2.DataSource = selectedEmployees;
        gridView2.DataBind();
    }

}

更新:更新了代码,以解释您使用提供的示例代码收到的例外情况