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();
}
}