我想从 RowDeleting 事件中的 GridView 获取ID,我试过这样:
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();
}
}
但它不起作用。
匿名类型是这样的,我使用List< this anonymousType >绑定到 GridView 的数据源:
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 :(得分:2)
如果您使用的是.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提供,您只需避免拼写错误。
答案 1 :(得分:1)
这将为您提供ID
var HouseHoldid = Guid.Parse(gvHouse.Rows[e.RowIndex].Cells[0].Text);
如果ID的类型为int,则为:
var HouseHoldid = Convert.ToInt32(gvHouse.Rows[e.RowIndex].Cells[0].Text);
删除后,您还必须刷新数据源。从绑定列表中删除项目并刷新gridview的数据源
答案 2 :(得分:0)
这种方式可以获取数据源
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataTable sourceData = (DataTable)GridView1.DataSource;
sourceData.Rows[e.RowIndex].Delete();
}