1

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<この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プロパティの値を取得したいだけです。

4

3 に答える 3

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;

タイプのプロパティはいずれもインテリセンスを介して利用できないことに注意してください。タイプミスを回避する必要があります。

于 2012-05-08T06:26:49.373 に答える
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);

削除した後、データソースも更新する必要があります。バインドされたリストからアイテムを削除し、グリッドビューのデータソースを更新します

于 2012-05-08T05:35:38.663 に答える
0

この方法でデータソースを取得できます

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{

    DataTable sourceData = (DataTable)GridView1.DataSource;

    sourceData.Rows[e.RowIndex].Delete();
}
于 2012-06-28T10:10:23.613 に答える