Как получить идентификатор родительской строки в gridview при добавлении строки в nestedgridview
Хорошо,
когда я добавляю новую строку во вложенный gridview(gvBulletItems) и есть существующие строки, я могу получить Родительский идентификатор с помощью
gvBulletItems.DataKeys[0].Value
(Кстати, я ненавижу магические числа)
однако когда у меня есть родительский gridview без элементов во вложенных gridview DataKeys возвращается как null
Я определил свой EmptyDataTemplate таким образом:
<EmptyDataTemplate> There are no Bullets for this bullet group. <table id="tblnewbullets" class="tbl-newItems" runat="server"> <tr class="tbl-newItems"> <td class="tbl-newItems" > List Order</td> <td> Display Text</td> </tr> <tr> <td> <asp:TextBox ID="txtbxNewListOrder" runat="server"></asp:TextBox> </td> <td> <asp:TextBox ID="txtbxNewDisplayText" runat="server"></asp:TextBox> </td> <td> <asp:LinkButton ID="linkAddBullet" CommandName="AddNewBullet" runat="server">Add</asp:LinkButton> </td> </tr> </table> </EmptyDataTemplate>
и это определялось раньше
<Columns> ..... </Columns>
Одна из вещей, о которых я подумал, заключалась в том, что я мог бы это сделать из идентификатора div, который вложенный gridview в качестве его идентификатора определяется как
"div<%# Eval("BulletGroupID") %>"
но когда я смотрю, это не удостоверение личности.
вот код, который связывает оба вида сетки
if (row.RowType == DataControlRowType.DataRow) { InfoCenterParent icParent = (InfoCenterParent)Session[PARENT]; List<InfoCenterBulletGroup> bulletGroupsData = icParent.bulletGroups; Label lblGroupBulletID = (Label)row.FindControl("lblBulletGroupID"); int BulletGroupID = int.Parse(lblGroupBulletID.Text); InfoCenterBulletGroup bg = bulletGroupsData.Single(b => b.BulletGroupID == BulletGroupID); GridView gvBulletItems = new GridView(); gvBulletItems = (GridView)row.FindControl("gvBulletItems"); gvBulletItems.DataSource = bg.bulletItems; gvBulletItems.DataBind(); }
и вот как я получаю BulletgroupID в OnRowCommand вложенного gridview
gvBulletItems.DataKeys[0].Value.ToString()
этот объект(gvBulletItems.DataKeys) не является нулевым, если я добавляю bulletitem в gridview, который имеет существующие элементы
однако если я добавляю к вложенному gridview который не имеет элементов то он возвращается как null
Вот объект, который привязывается к gridviews
public class InfoCenterBulletGroup { public int BulletGroupID { get; set; } public int InfoCenterID { get; set; } public string DisplayText { get; set; } public int ListOrder { get; set; } public List<InfoCenterBulletItem> bulletItems { get; set; } public string LastUpdatedBy { get; set; } public DateTime LastUpdatedDate { get; set; } } public class InfoCenterBulletItem { public int BulletID { get; set; } public int BulletGroupID { get; set; } public int ListOrder { get; set; } public string DisplayText { get; set; } public string LastUpdatedBy { get; set; } public DateTime LastUpdatedDate { get; set; } }
Что я уже пробовал:
Я уже пробовал назначать
<%# Eval("BulletGroupID") %>"
чтобы пометить текст в моем emptyDataTemplate
Я перерыл все свойства обоих gridviews
Я изношу свою клавиатуру с помощью поиска в Google