Visual Studio 2022中无法在GridView添加Template Field的问题求助
GridView添加TemplateField后不显示也未出现在源代码的解决办法
在设计页面通过「点击GridView元素→编辑列→添加Template Field→确定」的操作添加自定义列后,该字段既不在设计视图显示,也没出现在源代码中,现有相关代码如下:
<div class="row"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" OnSelecting="SqlDataSource1_Selecting1" ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>" SelectCommand="SELECT * FROM [book_master_tbl]"></asp:SqlDataSource> <div class="col"> <asp:GridView ID="GridView1" AlternatingRowStyle-CssClass="table table-striped table-bordered" runat="server" OnSelectedIndexChanged="GridView1_SelectedIndexChanged2" AutoGenerateColumns="False" DataKeyNames="book_id" DataSourceID="SqlDataSource1"> <AlternatingRowStyle CssClass="table table-striped table-bordered"></AlternatingRowStyle> <Columns> <asp:BoundField DataField="book_id" HeaderText="book_id" ReadOnly="True" SortExpression="book_id"></asp:BoundField> </Columns> </asp:GridView> </div> </div>
可以按以下步骤排查解决:
直接手动添加TemplateField到源代码
既然设计界面操作失效,最直接的方式是在GridView的<Columns>节点内手动写入TemplateField代码,示例如下:<asp:TemplateField HeaderText="自定义操作列"> <ItemTemplate> <%-- 这里可以放置任意控件或绑定数据,比如显示book_id或添加按钮 --%> <asp:Label ID="lblBookId" runat="server" Text='<%# Eval("book_id") %>'></asp:Label> <asp:Button ID="btnEdit" runat="server" Text="编辑" OnClick="btnEdit_Click" /> </ItemTemplate> </asp:TemplateField>添加后保存,设计视图和运行时都会正常显示该列。
清理项目并重启Visual Studio
有时Visual Studio的设计视图缓存会导致操作不生效,执行以下步骤:- 点击菜单栏「生成」→「清理解决方案」
- 关闭Visual Studio,重新打开项目
- 再次尝试通过设计界面添加TemplateField
验证设计界面操作的正确性
重新走一遍操作流程,确保每一步都正确:- 选中页面上的GridView控件
- 右键点击选择「编辑列」(或点击控件右上角的小箭头,选择「编辑列」)
- 在「可用字段」列表中找到「TemplateField」,点击「添加」按钮
- 确认「选定的字段」列表中已经出现该TemplateField,再点击「确定」按钮
- 保存页面后查看源代码和设计视图
检查AutoGenerateColumns属性
确认GridView的AutoGenerateColumns属性保持为False,如果该属性被意外改为True,会导致自定义列无法正常显示。
内容的提问来源于stack exchange,提问作者Supriya Pandey
相关产品推荐
相关产品推荐

