HI,
I am able to add the rows dynamically and preserve the state of it when I just have one radcombo and one textbox, but when I have 2 related radcombobox's (instead of a dropdown and a textbox) for each dynamic row created. On the selection of the first radcombobox's, the second should be populated (for eg. if the person selects state in the first radcombo, the second should populate with the list of states.)
I tried doing this, I am binding the second drop down box on the selected_indexchange event of the first dropdown, that works fine, but now when I try to add a row , it gives me error on the radgrid.rebind(). Because it is not finding any items in the second radcombobox after the reload.
Any help on this.
I am able to add the rows dynamically and preserve the state of it when I just have one radcombo and one textbox, but when I have 2 related radcombobox's (instead of a dropdown and a textbox) for each dynamic row created. On the selection of the first radcombobox's, the second should be populated (for eg. if the person selects state in the first radcombo, the second should populate with the list of states.)
I tried doing this, I am binding the second drop down box on the selected_indexchange event of the first dropdown, that works fine, but now when I try to add a row , it gives me error on the radgrid.rebind(). Because it is not finding any items in the second radcombobox after the reload.
Any help on this.
| <telerik:RadGrid ID="RadGrid1" AutoGenerateColumns="false" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" > |
| <MasterTableView> |
| <Columns> |
| <telerik:GridTemplateColumn UniqueName="TemplateColumn2" HeaderText="Filter Type"> |
| <ItemTemplate> |
| <telerik:RadComboBox ID="rcbFilterType" AppendDataBoundItems="true" SelectedValue='<%#Eval("Selected1") %>' runat="server" OnSelectedIndexChanged="rcbFilterType_SelectedIndexChanged" AutoPostBack="true"> |
| <Items> |
| <telerik:RadComboBoxItem Value="" Text=""/> |
| <telerik:RadComboBoxItem Value="0" Text="Keyword"/> |
| <telerik:RadComboBoxItem Value="1" Text="State"/> |
| <telerik:RadComboBoxItem Value="2" Text="Provider"/> |
| <telerik:RadComboBoxItem Value="3" Text="Faculty"/> |
| </Items> |
| </telerik:RadComboBox> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridTemplateColumn UniqueName="TemplateColumn1" HeaderText="Filter Options"> |
| <ItemTemplate> |
| <telerik:RadComboBox ID="rcbFilterOptions" AppendDataBoundItems="true" SelectedValue='<%#DataBinder.Eval(Container.DataItem,"Selected2") %>' runat="server"> |
| </telerik:RadComboBox> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
| Imports System.Web |
| Imports System.Web.SessionState |
| Imports System.Web.UI |
| Imports System.Web.UI.WebControls |
| Imports System.Web.UI.HtmlControls |
| Imports System.Data |
| Imports Telerik.Web.UI |
| Imports System.Data.SqlClient |
| Partial Class Dailog2 |
| Inherits System.Web.UI.Page |
| Public dt As DataTable |
| Public _store As String = "FilterTable" |
| Protected Sub form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form2.Load |
| If Not IsPostBack AndAlso ViewState("dt") = Nothing Then |
| If Session(_store) Is Nothing Then |
| dt = New DataTable() |
| dt.Columns.Add(New DataColumn("Selected1", GetType(String))) |
| dt.Columns.Add(New DataColumn("Selected2", GetType(String))) |
| 'Cache.Remove(_store) |
| Else |
| dt = DirectCast(Session(_store), DataTable) |
| End If |
| Else |
| ' Cache.Remove(_store) |
| dt = DirectCast(ViewState("dt"), DataTable) |
| End If |
| End Sub |
| Private Function AddRow(ByVal dt As DataTable) As DataTable |
| ' method to create row |
| Dim dr As DataRow = dt.NewRow() |
| dr("Selected1") = "" |
| dr("Selected2") = "" |
| dt.Rows.Add(dr) |
| Return dt |
| End Function |
| Protected Sub Button1_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click |
| Dim dt As DataTable = DirectCast(ViewState("dt"), DataTable) |
| For Each item As GridDataItem In RadGrid1.Items |
| Dim ddl1 As RadComboBox = DirectCast(item.FindControl("rcbFilterType"), RadComboBox) |
| Dim ddl2 As RadComboBox = DirectCast(item.FindControl("rcbFilterOptions"), RadComboBox) |
| Dim i As Integer = 0 |
| While i < dt.Rows.Count |
| If iitem.ItemIndex = i Then |
| dt.Rows(i)(0) = ddl1.SelectedValue |
| dt.Rows(i)(1) = ddl2.SelectedValue |
| End If |
| System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1) |
| End While |
| Next |
| ViewState("dt") = AddRow(dt) |
| RadGrid1.Rebind() |
| End Sub |
| Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) |
| If Not IsPostBack Then |
| ViewState("dt") = dt |
| RadGrid1.DataSource = dt |
| Else |
| dt = DirectCast(ViewState("dt"), DataTable) |
| RadGrid1.DataSource = dt |
| End If |
| End Sub |
| Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click |
| Dim dt As DataTable = DirectCast(ViewState("dt"), DataTable) |
| For Each item As GridDataItem In RadGrid1.Items |
| Dim ddl1 As RadComboBox = DirectCast(item.FindControl("rcbFilterType"), RadComboBox) |
| Dim ddl2 As RadComboBox = DirectCast(item.FindControl("rcbFilterOptions"), RadComboBox) |
| Dim item1 As New RadComboBoxItem() |
| item1.Text = "key1" |
| item1.Value = "0" |
| Dim i As Integer = 0 |
| While i < dt.Rows.Count |
| If iitem.ItemIndex = i Then |
| dt.Rows(i)(0) = ddl1.SelectedValue |
| dt.Rows(i)(1) = ddl2.SelectedValue |
| End If |
| System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1) |
| End While |
| Next |
| If (Not ClientScript.IsStartupScriptRegistered("return")) Then |
| Page.ClientScript.RegisterStartupScript(Me.GetType(), "return", "returnToParent();", True) |
| End If |
| End Sub |
| Protected Sub rcbFilterType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) |
| Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString) |
| Dim query As String = "" |
| Dim ddl1 As RadComboBox = CType(sender, RadComboBox) |
| Dim DataItem As GridDataItem = CType(ddl1.NamingContainer, GridDataItem) |
| Dim ddl2 As RadComboBox = DirectCast(DataItem.FindControl("rcbFilterOptions"), RadComboBox) |
| If ddl1.SelectedValue = 0 Then |
| query = "SELECT CategoryID as ID, CategoryName as NAME FROM Categories" |
| ElseIf ddl1.SelectedValue = 1 Then |
| query = "SELECT CategoryID as ID, CategoryName as NAME FROM Categories" |
| ElseIf ddl1.SelectedValue = 2 Then |
| query = "SELECT CategoryID as ID, CategoryName as NAME FROM Categories" |
| Else |
| query = "SELECT CategoryID as ID, CategoryName as NAME FROM Categories" |
| End If |
| Dim adapter As New SqlDataAdapter(query, connection) |
| Dim dt As New DataTable() |
| adapter.Fill(dt) |
| ddl2.DataTextField = "Name" |
| ddl2.DataValueField = "ID" |
| ddl2.DataSource = dt |
| ddl2.DataBind() |
| End Sub |
| End Class |