我有一個(gè)gridview用于顯示基于下拉列表中選定值的記錄。在gridview中,在代碼后添加了動(dòng)態(tài)數(shù)量的綁定字段列,其后是模板字段中的下拉列表和第二個(gè)模板字段中的按鈕。問(wèn)題是,當(dāng)我單擊按鈕時(shí),模板字段消失了。網(wǎng)格視圖<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是一個(gè)自定義方法,用于設(shè)置我的默認(rèn)boundfield屬性并返回BoundField對(duì)象。public static BoundField CreateBoundField(...){...}在對(duì)其進(jìn)行測(cè)試時(shí),gridview會(huì)在初始加載時(shí)根據(jù)需要進(jìn)行填充。但是,單擊該按鈕時(shí),不會(huì)觸發(fā)RowCommand事件,并且兩個(gè)模板字段都將消失。然后,下一個(gè)gridview.RowDataBound事件將引發(fā)空對(duì)象錯(cuò)誤,因?yàn)樵谠撔兄胁辉僬业较吕斜?。如果我刪除添加了綁定字段[Columns.Insert]的行,則在單擊btnSave并保留模板字段時(shí),將按預(yù)期觸發(fā)RowCommand。如果我再添加一個(gè)綁定字段列,RowCommand都不會(huì)觸發(fā),并且模板字段也會(huì)消失。有什么建議么?為什么將新列添加到gridview會(huì)使先前存在的按鈕的RowCommand事件無(wú)效并使模板字段消失?
模板字段消失
寶慕林4294392
2021-04-05 12:13:29