********dropdowmlist 在detailview 的itemcommand里面取不到对象***

Louis-Lv 2011-10-09 02:09:58
提示对象为空 ,,然后就空引用了!!!

<asp:TemplateField HeaderText="部门">
<AlternatingItemTemplate>

</AlternatingItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Dept") %>'></asp:Label>[code=C#]

</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DDLDept1" runat="server">
<asp:ListItem Value="sale">销售</asp:ListItem>
<asp:ListItem Value="CS1">CS1</asp:ListItem>
<asp:ListItem Value="CS2">CS2</asp:ListItem>
<asp:ListItem Value="CS3">CS3</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="DDLDept2" runat="server">
<asp:ListItem Value="sale">销售</asp:ListItem>
<asp:ListItem Value="CS1">CS1</asp:ListItem>
<asp:ListItem Value="CS2">CS2</asp:ListItem>
<asp:ListItem Value="CS3">CS3</asp:ListItem>
</asp:DropDownList>
</InsertItemTemplate>

</asp:TemplateField>
[/code]
上面是aspx的代码
...全文
270 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Louis-Lv 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 findcaiyzh 的回复:]

还有一个可能性就是。

ItemCommand会被调用两次,当点击Edit的时候,这时DetailsView中还没有显示EditItemTemplate中的控件,因此肯定取不到。

还有就是Update的时候,这时DetailsView中显示的是EditItemTemplate中的控件,应该能取到。

可以通过e.CommandName来判断,前者其值是"Edit", 后者值是"Up……
[/Quote]
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Dept") %>'>我是要在点编辑之前。。 取到这个label的值,然后赋予ddldept1 这个dropdowmlist。。。。。。。。
然后发现一件事情。。 label在e.commandname=update的时候 。。。 就取不到值了。。
还有。。这个事件 要求 是在点编辑状态之前就实现的。。 不是在我点编辑之后。。
所以我想的是能不能再e.commandname=edit的时候取到 这个对象
Louis-Lv 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 findcaiyzh 的回复:]

还有一个可能性就是。

ItemCommand会被调用两次,当点击Edit的时候,这时DetailsView中还没有显示EditItemTemplate中的控件,因此肯定取不到。

还有就是Update的时候,这时DetailsView中显示的是EditItemTemplate中的控件,应该能取到。

可以通过e.CommandName来判断,前者其值是"Edit", 后者值是"Up……
[/Quote]
谢谢啦。。先试试!!!
CalvinR 2011-10-09
  • 打赏
  • 举报
回复
楼主说的是那个地方有没设置值的
宝_爸 2011-10-09
  • 打赏
  • 举报
回复
还有一个可能性就是。

ItemCommand会被调用两次,当点击Edit的时候,这时DetailsView中还没有显示EditItemTemplate中的控件,因此肯定取不到。

还有就是Update的时候,这时DetailsView中显示的是EditItemTemplate中的控件,应该能取到。

可以通过e.CommandName来判断,前者其值是"Edit", 后者值是"Update"
wchy33 2011-10-09
  • 打赏
  • 举报
回复
传送门来接分好了
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 findcaiyzh 的回复:]

单步调试在你的QuickWatch中查看行列的内容

例如
DetailsView1.Rows[1].Cells[1]等 看看你的dropdownlist在哪里。
[/Quote]
位置是对的@!!!!
宝_爸 2011-10-09
  • 打赏
  • 举报
回复
单步调试在你的QuickWatch中查看行列的内容

例如
DetailsView1.Rows[1].Cells[1]等 看看你的dropdownlist在哪里。
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 findcaiyzh 的回复:]

又想了下,好像row也不对。

第几行取决于 DDLDept1显示在DetailsView的第几行上,而不是此记录在collection中的第几条记录
例如如果显示在第一行上就是
应该是DropDownList dd = (DropDownList)DetailsView1.Rows[0].FindControl("DDLDept1");

或者干脆DropDownList dd =……
[/Quote]
哥啊。。 不是行和列的问题!!!!
在itemupdaing事件里面是ok的
DropDownList dd = (DropDownList)DetailsView1.Rows[12].Cells[0].FindControl("DDLDept1");
这句话完全能拿到值。,,但是不晓得为什么在itemcommand里面就是空的了!!!
宝_爸 2011-10-09
  • 打赏
  • 举报
回复
又想了下,好像row也不对。

第几行取决于 DDLDept1显示在DetailsView的第几行上,而不是此记录在collection中的第几条记录
例如如果显示在第一行上就是
应该是DropDownList dd = (DropDownList)DetailsView1.Rows[0].FindControl("DDLDept1");

或者干脆DropDownList dd = (DropDownList)DetailsView1.FindControl("DDLDept1");
三石-gary 2011-10-09
  • 打赏
  • 举报
回复
单步调试吧。。。
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xuedeyingzi 的回复:]

引用 3 楼 zhangheng0624 的回复:

传送门过来的,没看懂帖子什么意思。

在编辑的时候要给dropdowmlist赋值!!!!!
dropdowmlist在detailview的模板页里面。。
我在itemcommand事件里面取他对象的时候。。。提示为null。所以老报错。。 想知道具体怎么解决!!!
在同一个模板同一列里面的label能取到值。。 不晓得为什……
[/Quote]
不写列的话 显示的也是空!!!
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 findcaiyzh 的回复:]

看你的template里只有一个控件,应该是
DropDownList dd = (DropDownList)DetailsView1.Rows[12].Cells[0].FindControl("DDLDept1");


如果还是不行的话,可以使用

DropDownList dd = (DropDownList)DetailsView1.Rows[12].FindControl……
[/Quote]
不是这个问题。。 这一行里面有两列!!!我取的是第二列的控件!!!
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangheng0624 的回复:]

传送门过来的,没看懂帖子什么意思。
[/Quote]
在编辑的时候要给dropdowmlist赋值!!!!!
dropdowmlist在detailview的模板页里面。。
我在itemcommand事件里面取他对象的时候。。。提示为null。所以老报错。。 想知道具体怎么解决!!!
在同一个模板同一列里面的label能取到值。。 不晓得为什么dropdowmlist不行!!!
宝_爸 2011-10-09
  • 打赏
  • 举报
回复
看你的template里只有一个控件,应该是
DropDownList dd = (DropDownList)DetailsView1.Rows[12].Cells[0].FindControl("DDLDept1");


如果还是不行的话,可以使用

DropDownList dd = (DropDownList)DetailsView1.Rows[12].FindControl("DDLDept1");
反正同一行里没有另一个相同名字的控件了。
企-鹅 2011-10-09
  • 打赏
  • 举报
回复
传送门过来的,没看懂帖子什么意思。
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuedeyingzi 的回复:]

C# code

protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{

DropDownList dd = (DropDownList)DetailsView1.Rows[12].Cells[1].FindControl("DDLDept1");
……
[/Quote]
这里的label是能拿到值的。。但是dropdowmlist就拿不到。。 还有dropdowmlist在detailview的itemupdating事件里面也是可以拿到的!! 求牛人求解!!
Louis-Lv 2011-10-09
  • 打赏
  • 举报
回复

protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{

DropDownList dd = (DropDownList)DetailsView1.Rows[12].Cells[1].FindControl("DDLDept1");

Label dp = (Label)DetailsView1.Rows[12].Cells[1].FindControl("Label1");
dd.SelectedValue = dp.Text;

}

内容概要:本文系统研究了构网型变流器的正负序阻抗解耦特性及其在弱电网环境下的稳定性表现,重点依托Matlab/Simulink仿真平台,构建了详细的阻抗数学模型,设计了解耦控制策略,并采用小信号扫频法进行频域辨识与稳定性验证。研究深入探讨了构网型变流器与传统跟网型逆变器在正负序阻抗特性上的本质差异,结合虚拟同步发电机(VSG)等先进控制技术,分析其在抑制宽频带振荡、削弱锁相环动态耦合等方面的优越性。文中不仅提供了完整的仿真模型与MATLAB代码实现,还整合了光伏、风电、储能、微电网等多类新能源系统的阻抗建模与稳定性分析资源,形成了一套面向新型电力系统稳定性的综合性技术资料体系,具有较强的科研复现与工程参考价值。; 适合人群:面向具备电力电子、电力系统自动化、新能源并网等专业背景的研究生、高校教师及工程技术人员,特别适用于从事阻抗建模、小干扰稳定性分析、宽频振荡机理研究以及撰写高水平学术论文的科研工作者。; 使用场景及目标:①掌握构网型变流器正负序阻抗建模与扫频辨识的仿真方法;②深入理解VSG等构网型控制在弱电网中提升稳定性的内在机理;③复现顶刊论文中的阻抗分析流程与稳定性判据应用;④利用提供的成熟模型与代码加速科研进程,支撑课题研究与学术成果产出。; 阅读建议:建议结合文中提供的Simulink模型与MATLAB代码,按照“理论建模—仿真搭建—扫频激励—频响提—Nyquist判据分析”的完整流程进行实践操作,重点关注扫频信号的注入方式、频率范围设置及阻抗曲线的物理意义解读,并参考博士论文复现案例深化对复杂动态耦合问题的理解。

62,272

社区成员

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

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

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

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