2

我使用ASPxGridViewandEntityDataSource作为它的数据源。在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 的原因是在 GridView 中显示的参数和连接超过 1 个表。)

4

2 回答 2

1

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

于 2012-01-25T13:58:31.140 回答
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 行。

于 2015-05-04T07:54:40.123 回答