不支持AspxGridView指定方法。问题

时间:2010-07-12 16:43:26

标签: asp.net linq-to-objects devexpress

Bellow是我的.aspx aspxGridview语法

 <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" 
            KeyFieldName="intProductCode" onrowinserted="ASPxGridView1_RowInserted">
            <Columns>
                <dx:GridViewCommandColumn VisibleIndex="0">
                    <EditButton Visible="True">
                    </EditButton>
                    <NewButton Visible="True">
                    </NewButton>
                    <DeleteButton Visible="True">
                    </DeleteButton>
                </dx:GridViewCommandColumn>
                <dx:GridViewDataTextColumn Caption="intProductCode" FieldName="intProductCode" 
                    VisibleIndex="1">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="strProductName" FieldName="strProductName" 
                    VisibleIndex="2">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="SKU" FieldName="SKU" VisibleIndex="3">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="PACK" FieldName="PACK" VisibleIndex="4">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="intQtyPerCase" FieldName="intQtyPerCase" 
                    VisibleIndex="5">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="mnyCasePrice" FieldName="mnyCasePrice" 
                    VisibleIndex="6">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="intTBQtyPerCase" 
                    FieldName="intTBQtyPerCase" VisibleIndex="7">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataCheckColumn Caption="bIsActive" FieldName="bIsActive" 
                    VisibleIndex="8">
                </dx:GridViewDataCheckColumn>
                <dx:GridViewDataTextColumn Caption="intSortingOrder" 
                    FieldName="intSortingOrder" VisibleIndex="9">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="strProductAccCode" 
                    FieldName="strProductAccCode" VisibleIndex="10">
                </dx:GridViewDataTextColumn>
            </Columns>
        </dx:ASPxGridView>

Bellow是我的C#语法:

 protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack != true)
            {
                BindGridView();
            }
        }

        private void BindGridView()
        {
            DB_OrderV2DataContext db = new DB_OrderV2DataContext();
            var r = from p in db.tblProductInfos
                    select p;
            ASPxGridView1.DataSource = r;
            ASPxGridView1.DataBind();
        }

        protected void LinqServerModeDataSource1_Selecting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceSelectEventArgs e)
        {
            DB_OrderV2DataContext db = new DB_OrderV2DataContext();
            var r= from p in db.tblProductInfos
                   select p;
            e.QueryableSource = r;


        }

        protected void ASPxGridView1_RowInserted(object sender, DevExpress.Web.Data.ASPxDataInsertedEventArgs e)
        {
            DB_OrderV2DataContext db = new DB_OrderV2DataContext();


            tblProductInfo otblProductInfo = new tblProductInfo ();

            otblProductInfo.intProductCode = (db.tblProductInfos.Max(p => (int?)p.intProductCode) ?? 0) + 1;//oProductController.GenerateProductCode();
            otblProductInfo.strProductName = Convert.ToString(e.NewValues["strProductName"]);
            otblProductInfo.SKU = Convert.ToString(e.NewValues["SKU"]);
            otblProductInfo.PACK = Convert.ToString(e.NewValues["PACK"]);
            otblProductInfo.intQtyPerCase = Convert.ToInt32(e.NewValues["intQtyPerCase"]);
            otblProductInfo.mnyCasePrice = Convert.ToDecimal(e.NewValues["mnyCasePrice"]);
            otblProductInfo.intTBQtyPerCase = Convert.ToInt32(e.NewValues["intTBQtyPerCase"]);
            otblProductInfo.bIsActive = Convert.ToBoolean(e.NewValues["bIsActive"]);
            otblProductInfo.intSortingOrder = (db.tblProductInfos.Max(p => (int?)p.intSortingOrder) ?? 0) + 1;//oProductController.GenerateSortingOrder();

            db.tblProductInfos.InsertOnSubmit(otblProductInfo);//the InsertOnSubmit method called in the preceding code was named Add and the DeleteOnSubmit method was named Remove.
            db.SubmitChanges();
            BindGridView();
            //oProductController.InsertAndSubmit();
           // ASPxGridView1.DataBind();
        }

我的SQL语法

CREATE TABLE [dbo].[tblProductInfo](
    [intProductCode] [int] NOT NULL,
    [strProductName] [varchar](100) NULL,
    [SKU] [varchar](50) NULL,
    [PACK] [varchar](50) NULL,
    [intQtyPerCase] [int] NULL,
    [mnyCasePrice] [money] NULL,
    [intTBQtyPerCase] [int] NULL,
    [bIsActive] [bit] NULL,
    [intSortingOrder] [int] NULL,
    [strProductAccCode] [varchar](max) NULL,
 CONSTRAINT [PK_tblProductInfo] PRIMARY KEY CLUSTERED 
(
    [intProductCode] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

当我想插入时,显示错误消息不支持指定的方法。 如何解决它。

4 个答案:

答案 0 :(得分:5)

当ASPxGridView尝试调用其基础DataSource的Update(插入,删除)命令时,会显示“指定的方法不受支持”错误消息,但未指定此命令。如果无法定义此命令,请处理RowUpdating(RowInserting,RowDeleting)事件,手动更新数据源(e.NewValues字典包含输入值),最后将e.Cancel参数设置为true并调用ASPxGridView.CancelEdit方法

答案 1 :(得分:1)

如果您不打算使用DataSource命令,那么您可以使用Grid RowUpdating事件并设置e.Cancel = true然后调用grid.CancelEdit()方法(如上面的DevExpress Team所述。下面是一个示例:< / p>

        void grid_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
    {
        // Your update logic here.
        e.Cancel = true;
        this.editableGrid.CancelEdit();
    }

答案 2 :(得分:0)

嗨,您只需确保要插入或更新。在您的插入方法中需要编写 的 e.cancle =真

http://community.devexpress.com/forums/p/74138/253467.aspx

答案 3 :(得分:0)

这包含解决方案该怎么做。怎么做

http://www.devexpress.com/Support/Center/e/E257.aspx