I am trying to insert data into a radgrid that is nested inside another radgrid. The problem I am having is getting the ID from the master table. the solution I tried looks like this:
protected void ImagesLDS_Inserting(object sender, LinqDataSourceInsertEventArgs e)
{
Image i = (Image)e.NewObject;
i.ItemID = Convert.ToInt32(ItemGrid.MasterTableView.DataKeyValues[0]["ItemID"]);
}
I thought this was working, but it seems ItemGrid.MasterTableView.DataKeyValues[0]["ItemID"] is always equal to 1.
Here is the markup for the grids:
There are other grids and LinqDataSources that have the dame issue. I would like to use the Label1 but I am not sure how to access it.
protected void ImagesLDS_Inserting(object sender, LinqDataSourceInsertEventArgs e)
{
Image i = (Image)e.NewObject;
i.ItemID = Convert.ToInt32(ItemGrid.MasterTableView.DataKeyValues[0]["ItemID"]);
}
I thought this was working, but it seems ItemGrid.MasterTableView.DataKeyValues[0]["ItemID"] is always equal to 1.
Here is the markup for the grids:
| <telerik:RadGrid ID="ItemGrid" runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" |
| AllowAutomaticUpdates="True" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" |
| DataSourceID="ItemsLDS" GridLines="None" Skin="WebBlue" AllowPaging="True"> |
| <MasterTableView AutoGenerateColumns="False" DataKeyNames="ItemID" DataSourceID="ItemsLDS" |
| CommandItemDisplay="Top"> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <NestedViewTemplate> |
| <asp:Label ID="Label1" runat="server" Text='<%# Eval("ItemID") %>' Visible="False"></asp:Label> |
| <asp:LinqDataSource ID="ImagesLDS" runat="server" ContextTypeName="CatalystDataContext" |
| TableName="Images" Where="ItemID == @ItemID" EnableDelete="True" EnableInsert="True" |
| EnableUpdate="True" OnInserting="ImagesLDS_Inserting"> |
| <WhereParameters> |
| <asp:ControlParameter ControlID="Label1" Name="ItemID" PropertyName="Text" Type="Int32" /> |
| </WhereParameters> |
| </asp:LinqDataSource> |
| <table> |
| <tr> |
| <td valign="top"> |
| <telerik:RadGrid ID="ImagesGrid" runat="server" DataSourceID="ImagesLDS" GridLines="None" |
| AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" |
| AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" HorizontalAlign="Left" |
| Skin="WebBlue"> |
| <MasterTableView DataSourceID="ImagesLDS" AutoGenerateColumns="False" DataKeyNames="ImageID" |
| CommandItemDisplay="Bottom" EditMode="InPlace"> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px" /> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px" /> |
| </ExpandCollapseColumn> |
| <CommandItemSettings AddNewRecordText="Add New Image" /> |
| <Columns> |
| <telerik:GridBoundColumn DataField="ImageID" DataType="System.Int32" HeaderText="ImageID" |
| ReadOnly="True" SortExpression="ImageID" UniqueName="ImageID" Visible="False"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="ItemID" DataType="System.Int32" HeaderText="ItemID" |
| SortExpression="ItemID" UniqueName="ItemID" Visible="False"> |
| </telerik:GridBoundColumn> |
| <telerik:GridTemplateColumn DataField="ImageURL" HeaderText="Image" SortExpression="ImageURL" |
| UniqueName="ImageURL"> |
| <EditItemTemplate> |
| <asp:TextBox ID="ImageURLTextBox" runat="server" Text='<%# Bind("ImageURL") %>'></asp:TextBox> |
| </EditItemTemplate> |
| <ItemTemplate> |
| <asp:Image ID="Image1" runat="server" AlternateText='<%# Eval("Description") %>' |
| Height="50px" ImageAlign="AbsMiddle" ImageUrl='<%# Eval("ImageURL") %>' Width="50px" /> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridBoundColumn DataField="Description" HeaderText="Alt. Text" SortExpression="Description" |
| UniqueName="Description"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
| </td> |
| </tr> |
| </table> |
| </NestedViewTemplate> |
There are other grids and LinqDataSources that have the dame issue. I would like to use the Label1 but I am not sure how to access it.