【问题标题】:How to bind string to grid?如何将字符串绑定到网格?
【发布时间】:2014-12-08 13:48:40
【问题描述】:

我想根据从另一个网格视图中选择的复选框在网格视图中显示数据。下面给出的代码根据复选框选择从第一个 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 name。我能怎么做。帮我找到合适的解决方案

                    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>

下图显示了基于下拉选择的网格视图中的数据。之后,我想选择一些行并单击分配,然后我必须在新的网格视图中显示选定的行。 图片:

【问题讨论】:

标签: c# asp.net gridview


【解决方案1】:

如果您还没有定义一个强类型来表示您选择的员工,您可以创建一个字典来存储您选择的员工。在完成对 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();
    }

}

更新:更新了代码以解决您使用提供的示例代码收到的异常

【讨论】:

  • 在使用您的解决方案时遇到一个错误。错误是“输入字符串的格式不正确”。
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 2021-09-05
相关资源
最近更新 更多