0

正常に動作するグリッドビューがあります。ただし、コマンドボタンがクリックされるたびに編集モードになります。これを止める方法はありますか?

<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イベントにありますが、何もしません。

4

2 に答える 2

0
<asp:gridview id="GridView1" runat="server"> 
        <columns> 
                <asp:templatefield> 
                        <itemtemplate> 
                                <asp:linkbutton id="btnEdit" runat="server" commandname="Edit" enabled='<%# !(Eval("Status").ToString().Equals("Closed") || Eval("Status").ToString().Equals("Cancelled")) %>' 
text="Edit" /> 
                        </itemtemplate> 
                </asp:templatefield> 
        </columns> 
</asp:gridview>
于 2012-07-25T17:47:54.567 に答える
-1

uこのコードをgridview_RowEditingeventHandlerに記述します。

protected void grvMain_RowEditing(object sender, GridViewEditEventArgs e)
{
    grvMain.EditIndex = -1;
    FillGrid();
}
于 2015-09-30T08:34:50.420 に答える