正常に動作するグリッドビューがあります。ただし、コマンドボタンがクリックされるたびに編集モードになります。これを止める方法はありますか?
<asp:GridView id="grv_purchaseOrder" runat="server" AutoGenerateColumns="False"
onrowdatabound="grv_purchaseOrder_RowDataBound" ShowFooter="True"
EmptyDataText="No Purchase Order were found." DataKeyNames="purchaseOrderID"
onrowcommand="grv_purchaseOrder_RowCommand"
onrowediting="grv_purchaseOrder_RowEditing">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="but_purchaseOrderDetails" runat="server" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
CausesValidation="false" CommandName="edit" Text="Detail" />
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="but_newOrderDetails" runat="server" CausesValidation="false" commandargument="0"
CommandName="new" Text="New" />
</FooterTemplate>
</asp:TemplateField>
<asp:BoundField DataField="name" HeaderText="Name" />
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="lbl_dateCreated" runat="server" Text='<%# Bind("dateCreated") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="purchaseOrderStatus" HeaderText="Status" />
</Columns>
</asp:GridView>
具体的には、but_newOrderDetailsはグリッドビューを編集モードにします。
RowCommandイベントハンドラーの内容は次のとおりです。
string currentCommand = e.CommandName;
ClientScriptManager cs = Page.ClientScript;
int rowIndex = int.Parse(e.CommandArgument.ToString());
string purchaseOrderID = grv_purchaseOrder.DataKeys[rowIndex]["purchaseOrderID"].ToString();
if (currentCommand == "edit" || currentCommand == "new") {
cs.RegisterStartupScript(this.GetType(), "popupScript", "window.open('PurchaseOrderDetail.aspx?purchaseOrderID=" + purchaseOrderID + "','_blank');", true);
}
また、grv_purchaseOrder.EditIndex=-1;を配置しようとします。rowEditingイベントにありますが、何もしません。