2012-05-08 2 views
0

я хочу, чтобы получить Id от GridView в RowDeleting Event, я попытался так:Как получить anonymousType DataItem от gridview_RowDeleting события

 protected void gvHouse_RowDeleting(object sender, GridViewDeleteEventArgs e) 
     { 
      Guid hholder = (Guid)(e.Values[0]); 

      using (var dataContext = new realtydbEntities()) 
      { 
       var house = (from h in dataContext.Households.Include("aspnet_Users.aspnet_Membership") 
          where h.HouseholdID == hholder 
          select h).First(); 
       dataContext.DeleteObject(house); 
       dataContext.SaveChanges(); 
      } 
     } 

, но он не работает.

анонимный тип, как это, и я использую список < это anonymousType> связываться с источником данных GridView «s:

      new 
         { 
          Id = u.HouseholdID, 
          BuNo = u.Building.BuildingName, 
          UnNo = u.UnitNo, 
          DepNo = u.DepartmentNo, 
          Name = u.aspnet_Users.UserName, 
          Corp = u.Corporation, 
          IdNumber = u.IdNumber, 
          Telephone = u.Telephone, 
          OtherHouseMembers = u.OtherHouseMembers, 
          OtherInfo = u.OtherInfo, 
          CrDate = u.aspnet_Users.aspnet_Membership.CreateDate 
         }); 

я хочу, чтобы получить анонимный объект или просто получить Значение свойства ID.

+0

как вы связывания данных в GridView? – Habib

+0

@ Habib.OSU i use List привязка к gridview –

+0

@Kevin «Это не работает» - очень широкое утверждение. Вы получаете ошибку компиляции? Исключение во время выполнения? Никакого исключения, кроме неправильного поведения? Подробности, пожалуйста. – phoog

ответ

1

это поможет вам идентификатор

var HouseHoldid = Guid.Parse(gvHouse.Rows[e.RowIndex].Cells[0].Text); 

, если идентификатор типа междунар тогда:

var HouseHoldid = Convert.ToInt32(gvHouse.Rows[e.RowIndex].Cells[0].Text); 

После удаления вы должны обновить источник данных, а также. Удалить элемент из списка и связанного приложения обновления источника данных для GridView

+0

В прошлый раз, когда я проверил, невозможно было преобразовать строку в Guid путем кастинга. – phoog

+0

@phoog, я просто последовал его примеру, вы правы Я собираюсь удалить его – Habib

1

Если вы используете .NET 4 вы можете воспользоваться dynamic типа, как это:

// Get the reference to the bound item 
dynamic item = gvHouse.Rows[e.RowIndex].DataItem; 
// Access item property 
var itemId = item.Id; 

Имейте в виду, что ни один из свойства вашего типа будут доступны через intellisense, вам просто нужно избегать опечаток.

+0

не работает, «RuntimeBinder.RuntimeBinderException: не удается выполнить привязку времени выполнения при нулевой ссылке» –

0

таким образом можно получить источник данных

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 

    DataTable sourceData = (DataTable)GridView1.DataSource; 

    sourceData.Rows[e.RowIndex].Delete(); 
} 
Смежные вопросы