【求助】从ASPX页面上提交到C#代码中,DataGrid中的DropDownList丢失

My Teching 2010-09-27 04:52:55
大家好,我有以下问题,请帮忙看看:

ASPX页面上有一个DataGrid,其中有DropDownList控件。
通过按扭提交到后台C#中,发现DataGrid.Items[0].Cells[0].Controls.Count为0(前面代码监视时,这里是有值的)。
这是怎么回事呢?可以获取到DropDownList控件么?
另外,我已经在ASPX页面的定义DataGrid的属性中加入了EnableViewState="true"。

谢谢!
...全文
203 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
panwenzhuo123 2010-10-23
  • 打赏
  • 举报
回复
你的DropDownList是放在模板列里面的吧,是不是放在了Edit状态的模板中,
而你去取这个DropDownList的时候,Item[0]是什么状态?最好贴代码上来

huangwenquan123 2010-10-23
  • 打赏
  • 举报
回复
可能由于回发了取不到值
可以试下不要在page_load里面绑定
在Init阶段处理看看
http://www.cnblogs.com/linlin/archive/2010/10/08/1845831.html
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 showshore 的回复:]
有朋友给点提示么?
[/Quote]

把几年前的Scott Mitchell的asp.net2.0入门教程全都做一遍,然后删除你的程序重新设计,这样以后(当用户需要而)改起来也有信心、有速度。
My Teching 2010-10-23
  • 打赏
  • 举报
回复
谢谢您的回复!
[Quote=引用 16 楼 wdxgdiy 的回复:]

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//这里写代码管事不
}
}
[/Quote]

已经试过了,不起作用的。
wdxgdiy 2010-10-23
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//这里写代码管事不
}
}
My Teching 2010-10-23
  • 打赏
  • 举报
回复
有朋友给点提示么?
My Teching 2010-10-05
  • 打赏
  • 举报
回复
补充:
页面上下拉框的ID,就是“dgContent$ctl52$ctl00”“dgContent$ctl52$ctl01”“dgContent$ctl52$ctl02”之类的,分别代表了第52行的,第1,2,3...个下拉框控件。
My Teching 2010-10-05
  • 打赏
  • 举报
回复
谢谢您的热心回复!
[Quote=引用 12 楼 csdbfans 的回复:]

问问,你的DropDownlist是怎么放到DataGrid里的?而且还有一点,我想知道回调后页面还有没有下拉框的(把cs文件里查找下拉框的语句注释掉),有的话,你可以通过查看页面的源代码的,看看页面里的下拉框的id值是什么来的?因为我觉得页面每行的下拉框id都是不一样的,通过FindControl是不可能得到某一行的下拉框的,可能只能通过选中行的主键来找到下拉框
[/Quote]
在我6楼引用代码片段之前,做了DataGrid的DataBind(),再之前把行列数据写入了一个DataTable

this.dgContent.DataSource = dt.DefaultView;
this.dgContent.DataBind();

在这之后,在页面上的DataGrid的最后一行,动态给每列添加了DropDownList控件(也就是6楼的代码片段的作用)。
Csdbfans 2010-10-04
  • 打赏
  • 举报
回复
问问,你的DropDownlist是怎么放到DataGrid里的?而且还有一点,我想知道回调后页面还有没有下拉框的(把cs文件里查找下拉框的语句注释掉),有的话,你可以通过查看页面的源代码的,看看页面里的下拉框的id值是什么来的?因为我觉得页面每行的下拉框id都是不一样的,通过FindControl是不可能得到某一行的下拉框的,可能只能通过选中行的主键来找到下拉框
My Teching 2010-10-04
  • 打赏
  • 举报
回复
谢谢您的回复!
[Quote=引用 10 楼 csdbfans 的回复:]

你这里能不能讲讲你的页面回调是怎么回调的吗?
我想知道你增加Dropdownlist项是在哪执行的?
因为你说的是“在页面回调之前,DropDownList1之类的控件还存在;但当页面回调时,FindControl已经找不到原来的控件了”,我觉得有可能执行顺序的问题,导致得不到下拉框
[/Quote]
其实就是在选择好了DropDownList1控件某项后,点击页面上一个普通ASPNET按钮而已(这样会重新触发Page_Load事件),并没有什么特别的回调。
Csdbfans 2010-10-04
  • 打赏
  • 举报
回复
你这里能不能讲讲你的页面回调是怎么回调的吗?
我想知道你增加Dropdownlist项是在哪执行的?
因为你说的是“在页面回调之前,DropDownList1之类的控件还存在;但当页面回调时,FindControl已经找不到原来的控件了”,我觉得有可能执行顺序的问题,导致得不到下拉框
My Teching 2010-10-04
  • 打赏
  • 举报
回复
谢谢您的回复!
[Quote=引用 8 楼 clj2005 的回复:]

System.Web.UI.WebControls.DropDownList DDl;
foreach (DataGridItem dg in DataGrid1.Items)
{
DDL = (DropDownList)dg.FindControl("DropDownList1");


……
[/Quote]
关键是,在页面回调之前,DropDownList1之类的控件还存在;但当页面回调时,FindControl已经找不到原来的控件了,所以这样不行哦。
clj2005 2010-09-27
  • 打赏
  • 举报
回复
System.Web.UI.WebControls.DropDownList DDl;
foreach (DataGridItem dg in DataGrid1.Items)
{
DDL = (DropDownList)dg.FindControl("DropDownList1");


}
wuyq11 2010-09-27
  • 打赏
  • 举报
回复
贴出代码看看
My Teching 2010-09-27
  • 打赏
  • 举报
回复
谢谢大家的热心回复!

我们用的是VS2008来做开发。
根据列头的数量运行时动态追加的DropDownList。可以在客户端(JS)得到诸如“dgContent$ctl52$ctl00”之类的对象标识。

for (int i = 0; i < dispHeaders.Length; i++)
{
using (DropDownList ddl = new DropDownList())
{
ddl.Attributes.Add("onchange", String.Format("javascript:check_select({0}, {1});", i + 1, dispHeaders.Length - 1));
for (var j = 0; j < dispValues.Length; j++)
{
ddl.Items.Add(new ListItem(dispNames[j], dispValues[j]));
}
this.dgContent.Items[dt.Rows.Count - 1].Cells[i].Controls.Add(ddl);
}
}
anliuty 2010-09-27
  • 打赏
  • 举报
回复
你的DropDownList是放在模板列里面的吧,是不是放在了Edit状态的模板中,
而你去取这个DropDownList的时候,Item[0]是什么状态?最好贴代码上来
My Teching 2010-09-27
  • 打赏
  • 举报
回复
TO IHandler:
试过了,一样的。

TO YellowManDog:
我也觉得应该是回调的原因,但不知道怎么解决?
gongsun 2010-09-27
  • 打赏
  • 举报
回复
DataGrid ?

.net1.1的东西? 都.net4.0了 。。。

YellowManDog 2010-09-27
  • 打赏
  • 举报
回复
点按钮是回发了,是不是这个原因啊
IHandler 2010-09-27
  • 打赏
  • 举报
回复
用FindControl("控件ID")这个方法试试
内容概要:本文围绕“空地多无人平台协同路径规划技术”的论文复现展开,重点介绍了基于Matlab的多无人机与地面无人平台协同路径规划的算法实现与仿真研究。研究系统性地整合了无人机三维路径规划、动态避障、多机协同、任务分配及防撞机制等核心技术,结合智能优化算法(如遗传算法、粒子群算法、灰狼优化算法等)与经典路径规划模型(如Dubins路径、A*、RRT等),在复杂威胁环境下实现了高效、安全的协同路径规划。文提供了完整的Matlab代码支持,便于科研人员进行算法验证、性能对比与二次开发,并强调通过复现高水平学术论文(如EI、SCI期刊及硕博论文)深入掌握该领域的前沿方法与技术路线。; 适合人群:具备一定Matlab编程基础,从事无人机系统、自动化控制、人工智能、路径规划等相关领域研究的研究生、科研人员及工程技术人员,尤其适用于正在开展科研项目、撰写学位论文或希望提升算法实践能力的研究者。; 使用场景及目标:① 复现并深入理解空地协同路径规划领域的高水平论文算法;② 掌握Matlab在多智能体路径规划的建模、仿真与可视化方法;③ 应用于科研课题、毕业设计、项目申报及算法创新实践,提升研究的技术深度与工程可行性。; 阅读建议:建议结合文提供的网盘资源(含完整代码、仿真模型及参考文献资料)同步学习,优先选择与自身研究方向契合的案例进行复现,注重算法原理与代码实现之间的映射关系,并在掌握基础方案后尝试进行参数调优、算法融合或引入新约束条件以实现改进与创新。

62,272

社区成员

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

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

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

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