Вставить / Обновить / Удалить отключен для этого элемента управления. сообщение EntityDataSource - PullRequest
2 голосов
/ 25 января 2012

Я использую ASPxGridView и EntityDataSource в качестве источника данных.В 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 ]

1 голос
/ 25 января 2012

Сначала у вас должен быть первичный идентификатор в таблице, и вы должны иметь его в форме, чтобы вы могли вставить его или, в идеале, установить ключ приращения и просто ввести значения. Затем вы должны установить значение свойства для управления. И тогда это должно сработать.

0 голосов
/ 04 мая 2015

Я обошел эту проблему.в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...