将单元格转换为选中复选框的文本框

本文关键字:复选框 文本 单元格 转换 | 更新日期: 2023-09-27 18:15:27

我使用mysql和asp.net与c#。我有一个网格视图,将显示动态选择的表数据。我可以显示所选表的数据。在第一列中,我添加了一个复选框和网格视图外的按钮。当用户选择复选框并单击按钮时,所选行必须转换为文本框。我能够找到选定的复选框,但我无法将单元格转换为文本框。下面是我的代码:

     int n = GridView1.HeaderRow.Cells.Count;
    for( int i=0; i < GridView1.Rows.Count;i++)
    {
        GridViewRow row = GridView1.Rows[i];
        bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
        {
            for( int j=0;j<n;j++)
            {
                TextBox txt = ((TextBox)GridView1.Rows[i].Cells[j]).Text;
            }
        }
    }

在这一行:TextBox txt = ((TextBox)GridView1.Rows[i].Cells[j]).Text;我得到一个警告:cannot convert 'System.Web.UI.Controls.TableCell' to type 'System.Web.UI.Controls.TextBox我无法解决这个问题。请帮助。谢谢你

将单元格转换为选中复选框的文本框

试试这个

你可以根据你对c#的实际操作来删除一行或几行。

概念是,你应该创建一个文本框,分配文本框的单元格文本,然后将新创建的文本框添加到特定行的网格单元格的子控件。

如果你觉得这个解决方案有用,请标记。

    bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
    if(isChecked)
    {
        for( int j=0;j<n;j++)
        {
            TextBox tbForCell = new TextBox();
            tbForCell.Text = GridView1.Rows[i].Cells[j].Text;
            GridView1.Rows[i].Cells[j].Text = "";
            GridView1.Rows[i].Cells[j].Controls.Add(tbForCell);
        }
    }

如果您想避免文本框出现在复选框列中,请将循环变量j初始化为1而不是0。

        for( int j=1;j<n;j++)

你的方法调用正在寻找单元格。文本框是包含在单元格中的控件。试试这样做:

TextBox txt = ((TextBox) GridView1.Rows[i].Cells[j].FindControl("textbox name")).Text;

FindControl方法文档在这里。

也接受@Bartdude关于使用可编辑网格视图的建议。如果一个至少能和你手卷的效果一样好,那就值得花时间学习如何使用它。