Hi,
I have a combination key made up by 3 fields (lead_id,location_id,seq_id). I need to increment seq_id in my code-behind before inserting into the table while the first 2 keys stay the same. Similar to this post but I'm doing in-place editing:
http://www.telerik.com/forums/add-edit-with-user-defined-primary-key
I'm unsure if it's doable but I tried both in-place and GridTemplateColumn as suggested in the post, but couldn't get it to work. I received this error - "Exception has been thrown by the target of an invocation." after it leaves the InsertCommand event. Is there anything I'm missing to get the seq_id modify and insert to table? I did set ReadOnly="False".
Here's my ascx:
Here's my code-behind:
Thank you in advance for your help.
Helen
I have a combination key made up by 3 fields (lead_id,location_id,seq_id). I need to increment seq_id in my code-behind before inserting into the table while the first 2 keys stay the same. Similar to this post but I'm doing in-place editing:
http://www.telerik.com/forums/add-edit-with-user-defined-primary-key
I'm unsure if it's doable but I tried both in-place and GridTemplateColumn as suggested in the post, but couldn't get it to work. I received this error - "Exception has been thrown by the target of an invocation." after it leaves the InsertCommand event. Is there anything I'm missing to get the seq_id modify and insert to table? I did set ReadOnly="False".
Here's my ascx:
<telerik:RadGrid ID="RadGrid1" runat="server" MasterTableView-EditMode="InPlace" DataSourceID="ObjectDataSource1" OnInsertCommand="RadGrid1_InsertCommand" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" > <MasterTableView AllowAutomaticDeletes="False" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AutoGenerateColumns="False" CommandItemDisplay="Top" DataKeyNames="lead_id,location_id,seq_id" DataSourceID="ObjectDataSource1"> <NoRecordsTemplate> No Record Exists</NoRecordsTemplate> <Columns> <telerik:GridBoundColumn DataField="lead_id" DataType="System.Int32" FilterControlAltText="Filter lead_id column" HeaderText="lead_id" ReadOnly="True" SortExpression="lead_id" UniqueName="lead_id" Visible="False"> <ColumnValidationSettings> <ModelErrorMessage Text="" /> </ColumnValidationSettings> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="location_id" DataType="System.Int32" FilterControlAltText="Filter location_id column" HeaderText="location_id" ReadOnly="True" SortExpression="location_id" UniqueName="location_id" Visible="False"> <ColumnValidationSettings> <ModelErrorMessage Text="" /> </ColumnValidationSettings> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="seq_id" DataType="System.Int32" FilterControlAltText="Filter seq_id column" HeaderText="seq_id" ReadOnly="False" SortExpression="seq_id" UniqueName="seq_id"> <ColumnValidationSettings> <ModelErrorMessage Text="" /> </ColumnValidationSettings> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="current_provider" FilterControlAltText="Filter current_provider column" HeaderText="current_provider" SortExpression="current_provider" UniqueName="current_provider"> <ColumnValidationSettings> <ModelErrorMessage Text="" /> </ColumnValidationSettings> </telerik:GridBoundColumn> </Columns> </MasterTableView></telerik:RadGrid><asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="SALTDetailProviderDALTableAdapters.salt_company_providerTableAdapter" UpdateMethod="Update" > <DeleteParameters> <asp:Parameter Name="Original_lead_id" Type="Int32" /> <asp:Parameter Name="Original_location_id" Type="Int32" /> <asp:Parameter Name="Original_seq_id" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="lead_id" Type="Int32" /> <asp:Parameter Name="location_id" Type="Int32" /> <asp:Parameter Name="seq_id" Type="Int32" /> <asp:Parameter Name="current_provider" Type="String" /> <asp:Parameter Name="contract_exp_dt" Type="DateTime" /> <asp:Parameter Name="data_type" Type="Int16" /> <asp:Parameter Name="ld_min" Type="Int32" /> <asp:Parameter Name="line_cnt" Type="Int32" /> <asp:Parameter Name="primary_yn" Type="String" /> </InsertParameters> <SelectParameters> <asp:ControlParameter ControlID="LeadIdLabel" Name="lead_id" PropertyName="Text" Type="Int32" /> </SelectParameters> <UpdateParameters> <asp:Parameter Name="current_provider" Type="String" /> <asp:Parameter Name="contract_exp_dt" Type="DateTime" /> <asp:Parameter Name="data_type" Type="Int16" /> <asp:Parameter Name="ld_min" Type="Int32" /> <asp:Parameter Name="line_cnt" Type="Int32" /> <asp:Parameter Name="primary_yn" Type="String" /> <asp:Parameter Name="Original_lead_id" Type="Int32" /> <asp:Parameter Name="Original_location_id" Type="Int32" /> <asp:Parameter Name="Original_seq_id" Type="Int32" /> </UpdateParameters></asp:ObjectDataSource>Here's my code-behind:
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e){ // Get last item's int count = RadGrid1.Items.Count; GridDataItem item = RadGrid1.Items[count - 1] as GridDataItem; // Get last item's provider name string providerName = item["current_provider"].Text; // Add 1 to last item's seq id string strSeqid = item["seq_id"].Text; int seqid = int.Parse(item["seq_id"].Text) + 1; // item about to get inserted GridDataInsertItem insertedItem = (GridDataInsertItem)e.Item; // Get provider name of the item about to get inserted TextBox providerNameTextBox = insertedItem["current_provider"].Controls[0] as TextBox; string providerNameInserted = providerNameTextBox.Text; // Modify the seq id (insertedItem["seq_id"].Controls[0] as TextBox).Text = seqid.ToString().Trim();}Thank you in advance for your help.
Helen
