我有一个gridview用于显示基于下拉列表中选定值的记录。在gridview中,在代码后添加了动态数量的绑定字段列,其后是模板字段中的下拉列表和第二个模板字段中的按钮。问题是,当我单击按钮时,模板字段消失了。网格视图<asp:UpdatePanel ID="upnlDetail" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="false" SkinID="gridviewGray" CellPadding="3" OnRowCommand="gvDetails_RowCommand" OnRowDataBound="gvDetails_RowDataBound" AllowSorting="true"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:DropDownList ID="ddlStatus" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:Button ID="btnSave" runat="server" CommandName="Save" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" Text="Save" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate></asp:UpdatePanel>后面的代码while (gvDetails.Columns.Count > 2) //Don't remove the rightmost columns{ gvDetails.Columns.RemoveAt(0);}gvDetails.DataSource = dt;gvDetails.DataBind();方法GridViewTools.CreateBoundField是一个自定义方法,用于设置我的默认boundfield属性并返回BoundField对象。public static BoundField CreateBoundField(...){...}在对其进行测试时,gridview会在初始加载时根据需要进行填充。但是,单击该按钮时,不会触发RowCommand事件,并且两个模板字段都将消失。然后,下一个gridview.RowDataBound事件将引发空对象错误,因为在该行中不再找到下拉列表。如果我删除添加了绑定字段[Columns.Insert]的行,则在单击btnSave并保留模板字段时,将按预期触发RowCommand。如果我再添加一个绑定字段列,RowCommand都不会触发,并且模板字段也会消失。有什么建议么?为什么将新列添加到gridview会使先前存在的按钮的RowCommand事件无效并使模板字段消失?
2 回答
- 2 回答
- 0 关注
- 168 浏览
添加回答
举报
0/150
提交
取消