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

Multiple RadCombobox in RadGrid

4 Answers 139 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Mehdi Baatout
Top achievements
Rank 1
Mehdi Baatout asked on 28 Jan 2014, 04:49 AM
Hi all,
I work on a financial project and I am developping actually a window for accounting entry.
I am using a grid with EditMode="InPlace".
I have a problem in the column named BalanceAccountNumber :
<telerik:GridTemplateColumn HeaderText="Bal. Acc. Type" UniqueName="BalanceAccount" HeaderStyle-Width="150" >
                        <ItemTemplate>
                            <%# Guid.Parse(Eval("BalanceAccountTypeId").ToString()) != null?
                              ERPHR.BusinessObjects.FinBalanceAccountTypeRepository.GetNameByLanguage(Guid.Parse(Eval("BalanceAccountTypeId").ToString()), PageLanguage):"" %>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadComboBox runat="server" ID="ddlBalanceAccountType" DataSourceID="edsBalanceAccounts" Width="140" AutoPostBack="true"
                                DataValueField="Id" DataTextField='<%# PageLanguage == ERPHR.AppUtilities.Enums.LanguageEnum.Arabic? "NameArabic": "NameEnglish" %>'>
                            </telerik:RadComboBox>
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridTemplateColumn UniqueName="BalanceAccountNumber" HeaderText="Bal. Acc. No" SortExpression="AccountNumber" ItemStyle-Width="150px">
                        <FooterTemplate>Template footer</FooterTemplate>
                        <FooterStyle VerticalAlign="Middle" HorizontalAlign="Center" />
                        <ItemTemplate>
                            <%# Guid.Parse(Eval("BalanceAccountId").ToString()) != null?
                              ERPHR.BusinessObjects.FinAccountRepository.GetAccountById(Guid.Parse(Eval("BalanceAccountId").ToString())).AccountNumber:"" %>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadComboBox runat="server" ID="rcbBalanceAccountNumber" EnableLoadOnDemand="True" DataTextField="AccountNumber" DataValueField="Id" AutoPostBack="true"
                                HighlightTemplatedItems="true" Height="140px" Width="140" DropDownWidth="420px" OnItemsRequested="rcbBalanceAccountNumber_ItemsRequested">
                                <HeaderTemplate>
                                    <ul>
                                        <li class="col1">Account No</li>
                                        <li class="col2">Account Name</li>
                                    </ul>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <ul>
                                        <li class="col1">
                                            <%# DataBinder.Eval(Container, "Text")%>
                                        </li>
                                        <li class="col2">
                                            <%# DataBinder.Eval(Container, "Attributes['AccountName']")%>
                                        </li>
                                    </ul>
                                </ItemTemplate>
                            </telerik:RadComboBox>
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
This column in edition or insertion is a RadCombox that the result is depending from the previous column(Balance Account Type):Balance Account Type in edition or insertion is also a RadComboBox and I need to retrieve in each time the SelectedValue of Balance Account Type RadComboBox to find her Balance account list. For that I am using this code :
protected void rcbBalanceAccountNumber_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
        {
            RadComboBox comboBox = sender as RadComboBox;
            RadComboBox rcbBalance = (RadComboBox)AccountPostingGrid.MasterTableView.GetInsertItem().FindControl("ddlBalanceAccountType");
            List<FinAccount> ListAccounts = BusinessObjects.FinAccountRepository.GetAccountByAccountNo(e.Text, Guid.Parse(rcbBalance.SelectedItem.Value));
 
            // Clear the default Item that has been re-created from ViewState at this point.
            comboBox.Items.Clear();
 
            foreach (FinAccount Account in ListAccounts)
            {
                RadComboBoxItem item = new RadComboBoxItem();
                item.Text = Account.AccountNumber;
                item.Value = Account.Id.ToString();
                item.Attributes.Add("AccountName", PageLanguage == LanguageEnum.Arabic ? Account.NameArabic : Account.NameEnglish);
 
                comboBox.Items.Add(item);
                item.DataBind();
            }
        }
My Problem is that I always the rcbBalance.SelectedItem.Value is the same : the value of the first Item of Balance Account Type RadComboBox.
Any idea about this problem????

4 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 28 Jan 2014, 06:00 AM
Hi Mehdi,

Please try the following code snippet to access the RadcomboBox in the Template column:

C#:
protected void rcbBalanceAccountNumber_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
  RadComboBox comboBox = sender as RadComboBox;
  GridEditableItem edit = (GridEditableItem)comboBox.NamingContainer;
  RadComboBox rcbBalance = (RadComboBox)edit.FindControl("ddlBalanceAccountType");
  string valu = rcbBalance.SelectedItem.Value; // Get the Selected value of the BalanceAccountType     
  // Your code
}

Thanks,
Princy
0
Mehdi Baatout
Top achievements
Rank 1
answered on 28 Jan 2014, 07:07 AM
Same problem!!!
I can't detect the real new value of balance type combo box.
0
Princy
Top achievements
Rank 2
answered on 29 Jan 2014, 04:08 AM
Hi Mehdi,

I was not able to replicate the issue, the code works fine at my end. Here is a sample that i tried:

ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"AutoGenerateEditColumn="true" AllowPaging="true">
    <MasterTableView CommandItemDisplay="Top" EditMode="InPlace">
        <Columns>
            <telerik:GridTemplateColumn HeaderText="CustomerID" UniqueName="CustomerID" DataField="CustomerID">
                <ItemTemplate>
                    <%# Eval("CustomerID")%>
                </ItemTemplate>
                <EditItemTemplate>
                    <telerik:RadComboBox runat="server" ID="IDCombo" DataSourceID="SqlDataSource1" DataValueField="OrderID"
AutoPostBack
="true" DataTextField="CustomerID">
                    </telerik:RadComboBox>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn UniqueName="ShipCountry" HeaderText="ShipCountry" SortExpression="ShipCountry">
                <ItemTemplate>
                    <%# Eval("ShipCountry")%>
                </ItemTemplate>
                <EditItemTemplate>
                    <telerik:RadComboBox runat="server" ID="CountryCombo" EnableLoadOnDemand="True" DataTextField="ShipCountry" DataValueField="OrderId" AutoPostBack="true" HighlightTemplatedItems="true" OnItemsRequested="CountryCombo_ItemsRequested">
                        <HeaderTemplate>
                            <ul>
                                <li class="col1">OrderId</li>
                                <li class="col2">ShipCountry</li>
                            </ul>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <ul>
                                <li class="col1">
                                    <%# Eval("OrderID")%>
                                </li>
                                <li class="col2">
                                    <%# Eval("ShipCountry")%>
                                </li>
                            </ul>
                        </ItemTemplate>
                    </telerik:RadComboBox>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

C#:
protected void CountryCombo_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
 RadComboBox comboBox = sender as RadComboBox;
 GridEditableItem edit = (GridEditableItem)comboBox.NamingContainer;
 RadComboBox ID = (RadComboBox)edit.FindControl("IDCombo");
 string IDvalue = ID.SelectedItem.Value; // value of previous combobox
 // Your code
}

Thanks,
Princy
0
Mehdi Baatout
Top achievements
Rank 1
answered on 02 Feb 2014, 06:35 AM
I have resolved the problem : My problem is that I have another column in the grid with required field, in all my tests I try to choose the balance type before filling this column.
The required field  block the postback to the server!!!
Tags
Grid
Asked by
Mehdi Baatout
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Mehdi Baatout
Top achievements
Rank 1
Share this question
or