asp.net findcontrol html控件,c# – FindControl找不到控件

这篇博客讨论了如何在ASP.NET的GridView控件中处理多选事件,特别是如何获取用户选择的事件ID。作者遇到的问题是在尝试从GridView行中提取BoundField时出现NullReferenceException。解决方案是通过访问GridViewRow的Cells集合来获取EventID,而不是查找BoundField。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在设置gridview,以便我可以选择多个事件并将其EventID添加到逗号分隔的字符串中.这将是一个订阅服务,所以我需要知道用户想要订阅哪些事件.

我使用模板字段添加一个Checkbox,我可以将它用作我想要的事件项的指示器.

所以gridview看起来像这样

runat="server"

AllowPaging="True"

AllowSorting="True"

AutoGenerateColumns="False"

DataSourceID="SqlDataSource1"

PageSize="15"

ViewStateMode="Enabled" SelectedRowStyle-BackColor="Purple">

并且信息填充得非常好.

我检索所选项目的代码应该很简单但尚未运行.

private string GetCheckedEvents()

{

List outputString = new List();

foreach (GridViewRow row in GridView1.Rows)

{

CheckBox cb = (CheckBox)row.FindControl("eventSelected");

if (cb != null && cb.Checked)

{

outputString.Add(row.FindControl("EventID").ToString());

}

}

return string.Join(",", outputString);

}

虽然调试代码时,CheckBox设置正确并进入if语句,但然后点击单行代码并提出

An exception of type ‘System.NullReferenceException’ occurred in EventEmailerConfiguration.dll but was not handled in user code

尝试在调试器给出的对象资源管理器中导航是至少可以说是PITA.

我没有穿越到正确的位置吗?

如何提取我需要的信息?

解决方法:

您找不到BoundField,因为它不是真正的控件.你必须使用row.Cells [index] .Text:

outputString.Add(row.Cells[1].Text);

标签:c,asp-net,gridview

来源: https://codeday.me/bug/20190609/1206639.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值