Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 此控件已禁用插入/更新/删除。EntityDataSource的消息_Asp.net_Devexpress_Aspxgridview_Entitydatasource - Fatal编程技术网

Asp.net 此控件已禁用插入/更新/删除。EntityDataSource的消息

Asp.net 此控件已禁用插入/更新/删除。EntityDataSource的消息,asp.net,devexpress,aspxgridview,entitydatasource,Asp.net,Devexpress,Aspxgridview,Entitydatasource,我使用ASPxGridView和EntityDataSource作为其数据源。在EntityDataSource中,我编写CommandText,因此无法将“EnableInsert”、“EnableUpdate”或“EnableDelete”设置为true。这就是为什么我手动操作(插入、更新、删除)数据。手动进行的更改将传递到数据库。但在GridView的侧面给出了这些错误: 对于插入:“此控件禁用插入。” 对于更新:“此控件的更新被禁用。” 对于删除:“此控件禁用删除。” 我怎样才能解决这个

我使用
ASPxGridView
EntityDataSource
作为其数据源。在
EntityDataSource
中,我编写CommandText,因此无法将“EnableInsert”、“EnableUpdate”或“EnableDelete”设置为true。这就是为什么我手动操作(插入、更新、删除)数据。手动进行的更改将传递到数据库。但在GridView的侧面给出了这些错误:

对于插入:
“此控件禁用插入。”

对于更新:
“此控件的更新被禁用。”

对于删除:
“此控件禁用删除。”

我怎样才能解决这个问题


(使用CommandText的原因是在GridView中显示参数和多个表的连接。)

首先,您必须在表中具有主ID,并且必须以表单形式具有主ID,以便插入它,或者理想情况下,您可以设置递增键,而只需输入值。 然后您必须为控件设置value属性。
然后它应该会工作。

我解决了这个问题。 在gridview中,我有一个模板列(我在CommandArgument中传递了两个参数):


这很有效。您也可以使用它来更新gridview行。

我已经插入、更新、删除了数据。但即使我可以处理数据,也会出现错误。现在,我做了一个技巧:编辑数据,然后最后调用方法“e.Cancel=true”;这里的“e”是“DevExpress.Web.data.aspxdataupdateingeventargs e”。所以gridview认为“好的,因此,编辑操作被取消。所以我不需要给出错误。”也就是说,我没有用正式的方式解决问题,而是用巧妙的方式解决。大约在那个时候(2012年),带EF的ASPxGriView是只读的。它要好得多,因为即使按列排序也不起作用。
<asp:TemplateField>
                   <ItemTemplate>                           
                       <asp:ImageButton ToolTip="Delete" ID="button4" ButtonType="Image" ImageUrl="~/Projectimages/img_del.png" Text="" CommandName="Select" CommandArgument='<%#Eval("ID") + ";" +"Delete"%>' runat="server"/>
                   </ItemTemplate>
               </asp:TemplateField>
string selectCommand = "";
    int selectCommandID = -1;
    protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Select")
        {                
            if (!e.CommandArgument.ToString().Contains(";"))
                selectCommand = "Select";
            else
            {
                selectCommandID = Convert.ToInt32(e.CommandArgument.ToString().Split(';')[0]);
                selectCommand = e.CommandArgument.ToString().Split(';')[1];
            }
        }            
    }

    protected void GridView_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (selectCommand == "Select")
        {
            //Select Code Here
        }
        else if (selectCommand == "Delete")
        {
            MyTestEntities context = new MyTestEntities();
            Table1 selectedRow = context.Table1.Single(a => a.ID == selectCommandID);
            context.Table1.DeleteObject(selectedRow);
            context.SaveChanges();

            EntityDataSource1.DataBind();
        }
    }