动态生成的checkbox,提交按钮的时候,如何获得其CHECKED属性?

starmilan 2009-03-28 04:14:40
动态生成了一个TABLE,每行最前都有个checkbox(动态生成的),怎么样能够获取到这个checkbox的checked属性啊?我也在网上查了好多,FindControl用了就是“未将对象引用设置到对象的实例”,都说遍历,怎么遍历啊?这个动态的TABLE是点击了按钮之后产生的。
...全文
870 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ava_song 2010-01-25
  • 打赏
  • 举报
回复
还有个问题,就是checkbox如果默认未选中的话,visible 为 false 再把visilbe 设回来,默认选中就不见了~这个是怎么回事儿啊~
jlj84237485 2009-03-30
  • 打赏
  • 举报
回复
((CheckBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Checked=true;
判断这一句是否为真就可以了
starmilan 2009-03-30
  • 打赏
  • 举报
回复
To Jinglecat :
用了你说的第一种方法,暂时解决了问题。十分感谢各位帮助我的朋友。
结贴。
jlj84237485 2009-03-30
  • 打赏
  • 举报
回复
在修改事件中加入修改事件
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
列:
Classes.BaseInfoA BaseInfoA = new BaseInfoA();
int index = e.RowIndex;
////Response.Write(((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text);
//Response.Write((GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text);
BaseInfoA.RID = int.Parse(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
BaseInfoA.Code = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString();
BaseInfoA.FullName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString();
BaseInfoA.ShortName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text.ToString();
BaseInfoA.RowIndex = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[6].Controls[0]).Text);

BaseInfoA.tableName = "";
BaseInfoA.Comment = "";
bool ss = (new IDLL.IDLL.DALTaskDriver()).DriveLWordTask().BaseInfoAOperation(2, BaseInfoA);
GridView1.EditIndex = -1;
GridView1_Contract("");

}
给你一段代码,根据你的情况改一下就可以了
tomiji 2009-03-30
  • 打赏
  • 举报
回复

List<string> checkedCbxID = new List<string>();
foreach (Control ctrl in this.ControlsControls)
{

if (ctrl is CheckBox)
{
CheckBox cbx = ctrl as CheckBox;
if (cbx.Checked)
{
checkedCbxID.Add(cbx.ID);
}
}
}

提供一个获取当前页面所有选中的checkbox的ID的方法。
要实现功能在动态生成CHECKBOX的时候ID需要自己控制下。
starmilan 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Jinglecat 的回复:]
1.
动态创建服务器控件,你必须保证每次页面回发都“动态”创建,因此不能放在 Button_CLick 之类的事件中,否则下次就无法访问了

你点一下其他Button这个Table还在吗?

2.
如果你仅仅取值,用 Request.Form["checkbox_name"] 就可以渠道了,但是 CheckBox 的 Name 也是自动生成了,对应的属性是 UniqueID 你可以先观察html发现生成规律
[/Quote]

点其他BUTTON的时候,这个TABLE是不见了的,我现在去试下每次页面回发都动态创建。
解决就给分

Jinglecat 2009-03-28
  • 打赏
  • 举报
回复
1.
动态创建服务器控件,你必须保证每次页面回发都“动态”创建,因此不能放在 Button_CLick 之类的事件中,否则下次就无法访问了

你点一下其他Button这个Table还在吗?

2.
如果你仅仅取值,用 Request.Form["checkbox_name"] 就可以渠道了,但是 CheckBox 的 Name 也是自动生成了,对应的属性是 UniqueID 你可以先观察html发现生成规律
kfps8kfps8 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 starmilan 的回复:]
可是问题是我现在需要找到页面动态生成的CHECKBOX这个控件,并判断它的CHECKED属性,这样的话该怎么写呢?
[/Quote]
你在动态创建CheckBox的时候,加上个name属性,在回发事件中就可用Request.Form["name"]来取值。
starmilan 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coodd 的回复:]
在checkbox所在的单元格里(HtmlTableCell)用FindControl
[/Quote]

我的TABLE也是动态生成的,这样可以么?
starmilan 2009-03-28
  • 打赏
  • 举报
回复
可是问题是我现在需要找到页面动态生成的CHECKBOX这个控件,并判断它的CHECKED属性,这样的话该怎么写呢?
starmilan 2009-03-28
  • 打赏
  • 举报
回复
我写了个测试页面,可以实现找到动态生成的TEXTBOX的值,代码如下:
.aspx页
<div>
<div id="div1" runat="server">
</div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><asp:Label
ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
////////
.aspx.cs页
protected void Page_Load(object sender, EventArgs e)
{
//test();
if (!IsPostBack)
{
CreateTable();
string[] str = new string[3];
str[0] = "1";
str[1] = "2";
str[2] = "3";
this.CheckBoxList1.DataSource = str;
this.CheckBoxList1.DataBind();
}
}
private void CreateTable()
{
Table table = new Table();
table.ID = "table";
for (int i = 0; i < 3; i++)
{
TextBox textbox1 = new TextBox();
textbox1.ID = "txt" + i.ToString();
Label lbl = new Label();
lbl.ID = "lbl" + i.ToString();
lbl.Text = "lbl" + i.ToString();
TableCell cell = new TableCell();
cell.Controls.Add(lbl);
cell.Controls.Add(textbox1);

TableRow row = new TableRow();
row.Controls.Add(cell);
table.Controls.Add(row);
}

this.div1.Controls.Add(table);
}

protected void Button1_Click(object sender, EventArgs e)
{
this.Label1.Text = "";
for (int i = 0; i < 3; i++)
{
foreach (Control control in div1.Controls)
{
this.Label1.Text += Request["txt" + i.ToString()].ToString()+"|";
}
}
this.Button1.Visible = false;
}
我姓区不姓区 2009-03-28
  • 打赏
  • 举报
回复
回发以后你的控件就没了,当然找不到了
燕飞7 2009-03-28
  • 打赏
  • 举报
回复
关注...
coodd 2009-03-28
  • 打赏
  • 举报
回复
在checkbox所在的单元格里(HtmlTableCell)用FindControl
wxd024 2009-03-28
  • 打赏
  • 举报
回复
当然得在动态table产生之后FindControl;还没创建checkbox当然找不到了

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧