c# - 应该具有 DropDownList 控件的单元格在运行时没有控件
问题描述
我试图让 DropDownList 显示在 c#/asp.net 的 GridView 中。GridView 的 html 包含:
<Columns>
<asp:TemplateField HeaderText ="Initials">
<asp:ItemTemplate>
<asp:DropDownList ID="dropdown" runat="server">
<asp:ListItem Value="-1">Select</asp:ListItem>
</asp:DropDownList>
</asp:ItemTemplate>
</asp:TemplateField>
</Columns>
其余列在此处添加到 c# 代码隐藏中:
var RouteRow = (new RoutesTableAdapter()).GetDataBy(this.AtmId);
RouteGrid.DataSource = RouteRow;
foreach (DataColumn col in RouteRow.Columns)
{
BoundField field = new BoundField();
field.DataField = col.ColumnName;
field.HeaderText = col.ColumnName;
if (!col.ColumnName.Equals("Num")) field.DataFormatString = "{0:N}";
RouteGrid.Columns.Add(field);
}
RouteGrid.DataBind();
调用 DataBind 后,有一个名为 Initials 的列,但所有单元格都是空的,并且尝试在 DataRowBound 中查找“下拉”控件返回 null。我意识到在标记中创建一些列,在代码隐藏中创建一些列可能不是最佳实践,但我不明白为什么该列仍然存在但没有控件。
编辑:
由 asp.net 在代码隐藏中创建的下拉字段此时仍为空,虽然 FindControl 在初始化后工作,但该列仍为空白。有没有办法在代码隐藏中制作整个 TemplateField?我天真地期望这会起作用:
TemplateField temp = new TemplateField();
temp.ItemTemplate = dropdown;
RouteGrid.Columns.Add(temp);
但是第二行不起作用,因为 DropDownList 不是 ITemplate,并且转换也不起作用。
编辑2:我已经回答了我自己的问题。在标记中,asp:ItemTemplate
应该是ItemTemplate
. 我不知道为什么会这样。
解决方案
我已经回答了我自己的问题。在标记中,asp:ItemTemplate 应该是 ItemTemplate。我不知道为什么会这样。
推荐阅读
- sql - NotesSQL 到 Notes 9 ODBC 连接导致 IM005(0)[Microsoft][ODBC Driver Manager] Driver's SQLAllocHandle on SQL_HANDLE_DBC failed
- php - 如何升级 symfony 次要版本(4.1 到 4.2)
- azure-ad-b2c - Azure AD B2C 审核跟踪 - 客户端 ID
- ionic-framework - 为离子切换添加边框
- python - 使用随机函数后如何选择特定元素?
- ios - 使用 cocoapods 的子规范构建 ios 框架的问题
- c# - 突出显示具有相同文本的所有文本块
- javascript - 为什么 .getMonth() 在一月份返回 11?
- javascript - FormBuilder - 自定义验证器 - 许多字段和承诺
- javascript - JavaScript:折叠无限流(生成器函数)