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

时间:2012-01-25 12:43:07

标签: asp.net devexpress aspxgridview entitydatasource

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

用于插入:"Insert is disabled for this control."
要更新:"Update is disabled for this control."
删除:"Delete is disabled for this control."

我该如何解决这个问题?

(使用CommandText的原因是参数和连接超过1个表以便在GridView中显示。)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

<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>

在代码背后我拆分CommandArgument并在变量中保存值,然后在SelectedIndexChanged事件中使用它们:

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();
        }
    }
这是有效的。您也可以使用它来更新gridview行。