This is a migrated thread and some comments may be shown as answers.

RadGrid Requirement with "InPlace" Edit mode

4 Answers 145 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Nani
Top achievements
Rank 1
Nani asked on 05 Oct 2011, 05:32 AM
Hi Telerik Team,

I have a RadGrid requirement that needs "InPlace" Editmode in which there need to be two dropdown columns one depends on other dropdown selection...

so i have seen a example in your site 

http://demos.telerik.com/aspnet-ajax/grid/examples/dataediting/validation/defaultcs.aspx

in this example when "Adding new Record" can i load data in second "Dropdownlist" depending on the first "Dropdownlist" selected value.
If so what is the best template column i can use to have an access on Dropdownlists.

Can u please guide me with correct approach how to obtain this requirement.

Its urgent...Please do respond

Thanks in Advance

4 Answers, 1 is accepted

Sort by
0
Pavlina
Telerik team
answered on 05 Oct 2011, 08:18 AM
Hello Nani,

The project in the code library below shows how to use related RadComboBoxes for Insert and Update operations in RadGrid:
http://www.telerik.com/community/code-library/aspnet-ajax/general/using-related-radcomboboxes-in-radgrid.aspx

Give it a try and see if it works as you expected.

All the best,
Pavlina
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
0
Nani
Top achievements
Rank 1
answered on 05 Oct 2011, 08:04 PM

HI Pavlina,
It almost worked and i have one more concern of setting the "Combobox value" to the label text when i hit "Edit button". I am attaching code and also the snipshot how its  behaving...

And more concern is when i hit "Add new record" i have a required field validators for the columns and "Source Breakdown*" combobox should reflect according to the "Source*" combobox but before firing the "Selectionchanged event its firing "validators" and "Selection change event is not firing.
*Find in snipshots attached

---ASPX code for columns----

<Columns>
                    <telerik:GridEditCommandColumn ButtonType="ImageButton">
                        <HeaderStyle Width="20px" />
                        <ItemStyle CssClass="MyImageButton" />
                    </telerik:GridEditCommandColumn>
                    <telerik:GridBoundColumn DataField="SortOrder" HeaderText="Sort Order" SortExpression="SortOrder"
                        UniqueName="SortOrder" HeaderStyle-Width="25px" ItemStyle-HorizontalAlign="Left">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="QueueName" HeaderText="Queue Name" SortExpression="QueueName"
                        UniqueName="QueueName" HeaderStyle-Width="230px" ItemStyle-HorizontalAlign="Left">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="PhoneNumber" HeaderText="Phone Number" SortExpression="PhoneNumber"
                        UniqueName="PhoneNumber" HeaderStyle-Width="100px" ItemStyle-HorizontalAlign="Left">
                    </telerik:GridBoundColumn>
                    <telerik:GridTemplateColumn HeaderText="Source" UniqueName="SourceName" HeaderStyle-Width="200px"
                        ItemStyle-HorizontalAlign="Left">
                        <ItemTemplate>
                            <asp:Label ID="lblsource" runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadComboBox ID="cmbsource" runat="server" AutoPostBack="true" OnSelectedIndexChanged="cmbsource_SelectedIndexChanged"
                                Height="150px">
                            </telerik:RadComboBox>
                            <asp:RequiredFieldValidator ID="validator3" runat="server" ControlToValidate="cmbsource"
                                Display="Dynamic" ErrorMessage="*Required" ForeColor="Red">
                            </asp:RequiredFieldValidator>
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridTemplateColumn HeaderText="Source Breakdown" UniqueName="SourceBreakdown"
                        HeaderStyle-Width="200px" ItemStyle-HorizontalAlign="Left">
                        <ItemTemplate>
                            <asp:Label ID="lblbreakdown" runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadComboBox ID="cmbbreakdown" runat="server">
                            </telerik:RadComboBox>
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridTemplateColumn HeaderText="Active" DataField="Active" UniqueName="Active"
                        HeaderStyle-Width="40px">
                        <ItemTemplate>
                            <asp:Label ID="lblActive" runat="server" Text='<%# Convert.ToBoolean(Eval("Active"))==true ? "No" : "Yes"%>'></asp:Label></ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadComboBox ID= "cmbactive" runat= "server" Text= '<%# Bind("Active") %>'>
                                <Items>
                                    <telerik:RadComboBoxItem Text= "" Value= ""/>
                                    <telerik:RadComboBoxItem Text= "Yes" Value= "False" />
                                    <telerik:RadComboBoxItem Text= "No" Value= "True" />
                                </Items>
                            </telerik:RadComboBox>
                            <asp:RequiredFieldValidator ID="validator4" runat="server" ControlToValidate="cmbactive"
                                Display="Dynamic" ErrorMessage="*Required" ForeColor="Red">
                            </asp:RequiredFieldValidator>
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>

Code behind which shows setting text in "Label" and binding values in  "Combobox"

protected void rgQueue_ItemDataBound(object sender, GridItemEventArgs e)
       {
           if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem)
           {
               int index = e.Item.ItemIndex;
               Label textsource = (Label)e.Item.FindControl("lblsource");
               Label textbreak = (Label)e.Item.FindControl("lblbreakdown");
 
               using (EnabledDataContext db = new EnabledDataContext())
               {
                   var queues = (from queue in db.Queues
                                 where queue.StoreID.Equals(535)
                                 select new
                                 {
                                     Queue = queue.Queue1,
                                     SortOrder = queue.SortOrder,
                                     QueueName = queue.Media,
                                     PhoneNumber = queue.PhoneNumber,
                                     SourceID = queue.SourceID,
                                     SourceBreakdownID = queue.SourceBreakdownID,
                                     Active = queue.Deleted
                                 }).OrderBy(a => a.SortOrder).ThenBy(a => a.QueueName).ToList();
 
                   var sources = (from source in db.Sources
                                  where source.SourceID == queues.ElementAt(index).SourceID &&
                                        source.StoreID == 535
                                  select new
                                  {
                                      SourceID = source.SourceID,
                                      SourceName = source.SourceName
                                  }).OrderBy(a => a.SourceName).ToList();
                   var breakdowns = (from sourcebreakdown in db.SourceBreakdowns
                                     where sourcebreakdown.SourceBreakdownID == queues.ElementAt(index).SourceBreakdownID &&
                                           sourcebreakdown.StoreID == 535
                                     select new
                                     {
                                         SourceBreakdownID = sourcebreakdown.SourceBreakdownID,
                                         BreakdownValue = sourcebreakdown.BreakdownValue
                                     }).OrderBy(a => a.BreakdownValue).ToList();
 
                   if (sources.Count != 0) { textsource.Text = sources.ElementAt(0).SourceName; }
                   else { textsource.Text = "Selected by user"; }
 
                   if (breakdowns.Count != 0) { textbreak.Text = breakdowns.ElementAt(0).BreakdownValue; }
                   else { textbreak.Text = "Selected by user"; }
 
               }
           }
 
           if (e.Item is GridEditableItem && e.Item.IsInEditMode)
           {
               int index = e.Item.ItemIndex;
               GridEditableItem editableitem = e.Item as GridEditableItem;
               RadComboBox listsource = (RadComboBox)e.Item.FindControl("cmbsource");
               RadComboBox listbreakdown = (RadComboBox)e.Item.FindControl("cmbbreakdown");
 
               using (EnabledDataContext db = new EnabledDataContext())
               {
 
                   var queues = (from queue in db.Queues
                                 where queue.StoreID.Equals(535)
                                 select new
                                 {
                                     Queue = queue.Queue1,
                                     SortOrder = queue.SortOrder,
                                     QueueName = queue.Media,
                                     PhoneNumber = queue.PhoneNumber,
                                     SourceID = queue.SourceID,
                                     SourceBreakdownID = queue.SourceBreakdownID,
                                     Active = queue.Deleted
                                 }).OrderBy(a => a.SortOrder).ThenBy(a => a.QueueName).ToList();
 
                   var sources = (from source in db.Sources
                                  where source.StoreID == 535 && !source.Deleted
                                  select new
                                  {
                                      SourceID = source.SourceID.ToString(),
                                      SourceName = source.SourceName
                                  }).OrderBy(a => a.SourceName).ToList();
                   sources.Insert(0, new { SourceID = "", SourceName = "Selected by user" });
                   if (index >= 0 && index <= queues.Count)
                   {
                       var breakdowns = (from sourcebreakdown in db.SourceBreakdowns
                                         where sourcebreakdown.SourceBreakdownID == queues.ElementAt(index).SourceBreakdownID ||
                                               sourcebreakdown.SourceID == queues.ElementAt(index).SourceID && !sourcebreakdown.Deleted
                                         select new
                                         {
                                             SourceBreakdownID = sourcebreakdown.SourceBreakdownID.ToString(),
                                             BreakdownValue = sourcebreakdown.BreakdownValue
                                         }).OrderBy(a => a.BreakdownValue).ToList();
                       breakdowns.Insert(0, new { SourceBreakdownID = "", BreakdownValue = "Selected by user" });
 
                       listbreakdown.DataSource = breakdowns;
                       listbreakdown.DataTextField = "BreakdownValue";
                       listbreakdown.DataValueField = "SourceBreakdownID";
                       listbreakdown.DataBind();
                       listbreakdown.Items.FindItemByText("Selected by user").ForeColor = Color.Red;
                   }
                   listsource.DataSource = sources;
                   listsource.DataTextField = "SourceName";
                   listsource.DataValueField = "SourceID";
                   listsource.DataBind();
                   listsource.Items.FindItemByText("Selected by user").ForeColor = Color.Red;
                   if (editableitem.ItemIndex > -1)
                   {
                       if (!string.IsNullOrEmpty(Convert.ToString(editableitem.GetDataKeyValue("SourceName"))))
                       {
                           listsource.SelectedValue = Convert.ToString(editableitem.GetDataKeyValue("SourceName"));
                       }
                   }
               }
 
           }
 
       }

Code behind for "Validators" and "Selection changed event"

protected void cmbsource_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            RadComboBox rcsource = (sender as RadComboBox);
            GridEditableItem editItem = (GridEditableItem)rcsource.NamingContainer;
            RadComboBox rcsourcebreakdown = (RadComboBox)editItem["SourceBreakdown"].FindControl("cmbbreakdown");
            string value = rcsource.SelectedValue;
            using (EnabledDataContext db = new EnabledDataContext())
            {
                var queues = (from queue in db.Queues
                              where queue.StoreID.Equals(535)
                              select new
                              {
                                  Queue = queue.Queue1,
                                  SortOrder = queue.SortOrder,
                                  QueueName = queue.Media,
                                  PhoneNumber = queue.PhoneNumber,
                                  SourceID = queue.SourceID,
                                  SourceBreakdownID = queue.SourceBreakdownID,
                                  Active = queue.Deleted
                              }).OrderBy(a => a.SortOrder).ThenBy(a => a.QueueName).ToList();
                var results = (from sourcebreakdowns in db.SourceBreakdowns
                               where sourcebreakdowns.SourceID == Convert.ToInt32(value) &&
                                     !sourcebreakdowns.Deleted
                               orderby sourcebreakdowns.BreakdownOrder, sourcebreakdowns.BreakdownValue
                               select new
                               {
                                   SourceBreakdownID = sourcebreakdowns.SourceBreakdownID.ToString(),
                                   BreakdownValue = sourcebreakdowns.BreakdownValue
                               }).ToList();
                results.Insert(0, new { SourceBreakdownID = "", BreakdownValue = "Selected by user" });
                rcsourcebreakdown.Visible = true;
                rcsourcebreakdown.DataSource = results;
                rcsourcebreakdown.DataTextField = "BreakdownValue";
                rcsourcebreakdown.DataValueField = "SourceBreakdownID";
                rcsourcebreakdown.DataBind();
                rcsourcebreakdown.Items.FindItemByText("Selected by user").ForeColor = Color.Red;
            }
 
        }


0
Nani
Top achievements
Rank 1
answered on 05 Oct 2011, 08:29 PM
Hi Pavlina,

I fixed the selection thing can u help with the "Validate thing"

I will be waiting for ur reply...

Its urgent.

Thanku in advance
0
Pavlina
Telerik team
answered on 10 Oct 2011, 02:35 PM
Hello Nani,

I noticed that you have opened a duplicate post on the same matter. Please, refer to the other forum ticket post for additional information. To avoid duplicate posts, I suggest you continue the communication there.

Regards,
Pavlina
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
Tags
General Discussions
Asked by
Nani
Top achievements
Rank 1
Answers by
Pavlina
Telerik team
Nani
Top achievements
Rank 1
Share this question
or