AspxGridView Указанный метод не поддерживается. проблема - PullRequest
1 голос
/ 12 июля 2010

Ниже - мой .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>

Ниже представлен мой синтаксис 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 ]

5 голосов
/ 12 июля 2010

Сообщение об ошибке «Указанный метод не поддерживается» отображается, когда ASPxGridView пытается вызвать команду «Обновить (вставить, удалить)» своего базового источника данных, но эта команда не указана. Если вы не можете определить эту команду, обработайте событие RowUpdating (RowInserting, RowDeleting), обновите источник данных вручную (словарь e.NewValues ​​содержит входное значение) и, наконец, установите для параметра e.Cancel значение true и вызовите метод ASPxGridView.CancelEdit .

1 голос
/ 15 августа 2013

Если вы не планируете использовать команды DataSource, вы можете использовать событие Grid RowUpdating и установить e.Cancel = true, а затем вызвать метод grid.CancelEdit () (как упомянуто командой DevExpress выше. Ниже приведен пример:

        void grid_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
    {
        // Your update logic here.
        e.Cancel = true;
        this.editableGrid.CancelEdit();
    }
0 голосов
/ 12 июля 2010

это содержит решение, что делать. Как сделать

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

0 голосов
/ 12 июля 2010

привет, вы просто убедитесь, что хотите вставить или обновить. В вашем методе вставки необходимо написать e.cancle = true

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

...