Nested Datagrid

A

Atif Jalal

I have a datagrid nested in to a datgrid. Each row of the inner
datagrid has a CheckBox. I am trying to select a bunch of rows from th
einner datagrid and click a delete button to delete them, but it doe
not work. I reference the inner datagrid directly by its ID and I get
an error Object reference set to null.

If I select the checkbox against the rows on the outter datagrid and
click a second delete button to delete, it works and deletes the
complete row including the inner datagrid rows correponding to the
outter datagrid row.


The code to delete the inner datagrid row is

Protected Sub btnAccDelete_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnACCDelete.Click
'Walk the grid looking for selected rows
Dim _i As Integer = 0
Dim _j As Integer = 0
Dim cb As CheckBox
Dim dgi As DataGridItem
Dim _AccId As Integer

''Dim da As SqlDataAdapter
For Each dgi In ACCDataGrid.Items
cb = CType(dgi.Cells(0).Controls(1), CheckBox)
Dim tmp As String = cb.ID
If cb.Checked Then
' Determine the key of the selected record ...
_AccId =
CType(LineItemsDataGrid.DataKeys(dgi.ItemIndex), Integer)
'Code to Delete the record goes here


End If
_i += 1
Next

RefreshDataGrid()

End Sub


The HTML Code for the Nested Datagrid is as follows:
<TR>
<TD colSpan="6">
<asp:DataGrid id="LineItemsDataGrid" Width="100%" runat="server"
AutoGenerateColumns="False" HorizontalAlign="Center"
AllowSorting="True" AlternatingItemStyle-CssClass="GridAlternatingRow">
<AlternatingItemStyle
CssClass="GridAlternatingRow"></AlternatingItemStyle>
<HeaderStyle CssClass="GridColumnHeading"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Select">
<HeaderStyle CssClass="GridColumnHeading"></HeaderStyle>
<ItemTemplate>
<asp:CheckBox id="CheckBox1" runat="server"
EnableViewState="True"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn
DataNavigateUrlFormatString="JavaScript:popup('LineItem.aspx?LineItemId={0}&Process=1&',
'Add Line Item', '250','1200', '345','345','275', '1');"
DataNavigateUrlField="ProcessLineItemId" DataTextField="Description"
HeaderText="Line Items"></asp:HyperLinkColumn>
<asp:BoundColumn DataField="description" HeaderText="Description">
<HeaderStyle HorizontalAlign="Center"
CssClass="GridColumnHeading"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="unitPrice" HeaderText="Unit Price">
<HeaderStyle HorizontalAlign="Center"
CssClass="GridColumnHeading"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="quantity" HeaderText="Quantity">
<HeaderStyle HorizontalAlign="Center"
CssClass="GridColumnHeading"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="lineItemTotal" HeaderText="Amount">
<HeaderStyle HorizontalAlign="Center"
CssClass="GridColumnHeading"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn HeaderText="Discounted Total">
<HeaderStyle HorizontalAlign="Center"
CssClass="GridColumnHeading"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="Account Classification">
<ItemTemplate>
<asp:DataGrid id="ACCDataGrid" Runat="server"
AutoGenerateColumns="False" HorizontalAlign="Center"
AllowSorting="True" AlternatingItemStyle-CssClass="GridAlternatingRow"
DataKeyField="AccCodeId" DataSource='<%#
GetAcc(DataBinder.Eval(Container.DataItem, "ProcessLineItemId"))%>'>
<AlternatingItemStyle
CssClass="GridAlternatingRow"></AlternatingItemStyle>
<HeaderStyle CssClass="GridColumnHeading"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Select">
<HeaderStyle CssClass="GridColumnHeading"></HeaderStyle>
<ItemTemplate>
<asp:CheckBox id="Checkbox3" runat="server"
EnableViewState="True"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn HeaderText="Account Classification Code"
DataTextField="AccountClassificationCode"
DataNavigateUrlField="AccCodeId"
DataNavigateUrlFormatString="JavaScript:popup('AccountingCode.aspx?AccId={0}&Process=1&','Add
Account Classification Code', '250','1000',
'500','500','275','1');"></asp:HyperLinkColumn>
<asp:BoundColumn DataField="CalculatedAmount"
HeaderText="Amount">
<HeaderStyle HorizontalAlign="Center"
CssClass="GridColumnHeading"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn runat="server"
DataNavigateUrlField="ProcessLineItemId"
DataNavigateUrlFormatString="JavaScript:popup('AccountingCode.aspx?LineItemID={0}&Process=1&','Add
Account Classification Code', '250','1000', '500','500','275','1');"
Text="Add New ACC"></asp:HyperLinkColumn>
</Columns>
</asp:DataGrid></TD>
</TR>
<TR>
<TD align="left"><IMG height="1" src="/images/spc.gif" width="5"
border="0">
<asp:button id="btnLIDelete" onclick="btnLIDelete_Click"
Runat="server" CssClass="InputButton" Text="Delete"></asp:button><IMG
height="5" src="/images/spc.gif" width="1" border="0"><BR>
</TD>
<TD align="left" ><IMG height="1" src="/images/spc.gif" width="5"
border="0">
<asp:button id="btnACCDelete" onclick="btnACCDelete_Click"
Runat="server" CssClass="InputButton" Text="Delete"></asp:button><IMG
height="5" src="/images/spc.gif" width="1" border="0"><BR>
</TD>
</TR>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top