猿问

模板字段消失

我有一个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事件无效并使模板字段消失?


宝慕林4294392
浏览 169回答 2
2回答
随时随地看视频慕课网APP
我要回答