0

我有一个可以正常工作的gridview。但是只要单击命令按钮,它就会进入编辑模式。有没有办法阻止这一切?

<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 将 gridview 置于编辑模式。

这是 Row Command 事件处理程序内部的内容:

        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

您只需在 gridview_RowEditing eventHandler 中编写此代码:

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