将单元格转换为选中复选框的文本框
本文关键字:复选框 文本 单元格 转换 | 更新日期: 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关于使用可编辑网格视图的建议。如果一个至少能和你手卷的效果一样好,那就值得花时间学习如何使用它。