невозможно вставить Telerik RadGrid In-Place, используя OnInsertCommand e.item - PullRequest
1 голос
/ 10 мая 2011

Я пытаюсь выполнить вставку, используя сетку teleriks rad. Я делаю вставку на месте и использую метод onInsertCommand для установки значений, которые должны быть вставлены. я нашел это заявление в документации телерика:

GridEditableItem editedItem = e.Item as GridEditableItem; когда я использую его, editedItem получает нулевое значение, и я не знаю, как заставить его работать:

Вот мой код для InsertCommand

защищенный void RadGrid1_InsertCommand (Отправитель объекта, Telerik.Web.UI.GridCommandEventArgs e) {

        GridEditableItem editedItem = e.Item as GridEditableItem;

        Hashtable newValues = new Hashtable();

        e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);
        editedItem.Edit = false;

        Yieldco.RS.Libraries.BusinessObjects.UnitType u1 = new Yieldco.RS.Libraries.BusinessObjects.UnitType();

        u1.Description = newValues["Description"].ToString();

        u1.UnitTypeID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["UnitTypeID"]);
        u1.CommunityID = 1;
        u1.CompanyID = 1;
        u1.Bathrooms = (float)Convert.ToDouble(newValues["Bathrooms"]);
        u1.Bedrooms = Convert.ToInt32(newValues["Bedrooms"]);
        u1.SqFtHigh = (float)Convert.ToDouble(newValues["SqFtHigh"]);
        u1.SqFtLow = (float)Convert.ToDouble(newValues["SqFtLow"]);
        u1.NumOfUnits = Convert.ToInt32(newValues["NumOfUnits"]);
        u1.ProCon = Convert.ToInt32(newValues["ProCon"]);
        u1.OthCon = Convert.ToInt32(newValues["OthCon"]);
        u1.RentHigh = (float)Convert.ToDouble(newValues["RentHigh"]);
        u1.RentLow = (float)Convert.ToDouble(newValues["RentLow"]);
        u1.Status = 1;

        int id = MSController.SaveUnitTypes(u1);
}

и моя aspx radgrid


AutoGenerateColumns = "false" AllowAutomaticUpdates = "false" AllowAutomaticInserts = "false" DataKeyNames = "UnitTypeID" GridLines = "Both"
EditItemStyle-ширина = "24px"> <% - <br> -%>
'runat = "server" ID = "Addnew" Text = "Добавить новый" CommandName = "InitInsert" /> 'runat = "server" ID = "CancelAdd" Text = "Cancel" CommandName = "CancelAll" /> 'runat = "server" ID = "InsertNew" Text = "Выполнить вставку" CommandName = "PerformInsert" />
'runat = "server" ID = "EditAll" Text = "Редактировать все" CommandName = "EditAll" /> 0%> 'runat = "server" ID = "CancelEdit" Text = "Cancel" CommandName = "CancelAll" /> 0%> 'runat = "server" ID = "UpdateAll" Text = "Обновить все" CommandName = "UpdateAll" OnClientClick =' javascript: возвращать подтверждение ("Вы действительно хотите обновить все записи?") '/>

     <asp:ObjectDataSource ID="odsGetUnitTypes" runat="server"
    TypeName="Yieldco.RS.Libraries.Controllers.MSController" 
    DataObjectTypeName="Yieldco.RS.Libraries.BusinessObjects.UnitType" 
    SelectMethod="GetUnitTypesByCommunityID"
    InsertMethod="SaveUnitTypes"
    UpdateMethod="SaveUnitTypes"
    >
    <SelectParameters>          
        <asp:Parameter DefaultValue="1" Name="CommunityID" />            
    </SelectParameters>
    </asp:ObjectDataSource>

Пожалуйста, помогите мне сделать удачную вставку.

Также в документации Telerik я видел, как они используют индекс e.ite.item для получения значения vdatakeyvalue, но если я его использую, индекс всегда отображается как -1, поэтому я использовал editedItem.ItemIndex, и он отлично работает

Заранее спасибо

1 Ответ

2 голосов
/ 11 мая 2011

Чтобы сослаться на элемент вставки, вы должны использовать следующий синтаксис (в отличие от редактируемого элемента):

if(e.CommandName = RadGrid.PerformInsertCommandName)
{
  GridEditableItem editItem = e.Item.OwnerTableView.GetInsertItem();
}
...