Hi,
I was wondering if anyone could help me out. I'm trying to add a simple userControl to only one cell of a radGrid. I don't need to repeat it in every cell of that column (since the rest of the column is supposed to be text) and the radGrid has more than one row (4 by 4 to be exact and my uc must be in the bottom one on the right).
Any help would be greatly appreciated.
Thanks a lot
Sam
I was wondering if anyone could help me out. I'm trying to add a simple userControl to only one cell of a radGrid. I don't need to repeat it in every cell of that column (since the rest of the column is supposed to be text) and the radGrid has more than one row (4 by 4 to be exact and my uc must be in the bottom one on the right).
Any help would be greatly appreciated.
Thanks a lot
Sam
6 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 14 Jul 2010, 02:08 PM
Hello,
You can add a UserControl in specific cell of RadGrid by using following code snippet.
C#:
Thanks,
Princy.
You can add a UserControl in specific cell of RadGrid by using following code snippet.
C#:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; if (item.ItemIndex == 3) { UserControl uc = (UserControl)Page.LoadControl("~/WebUserControl.ascx"); //Path to your user control item["ColumnUniqueName"].Controls.Add(uc); } } } protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; if (item.ItemIndex == 3) { UserControl uc = (UserControl)Page.LoadControl("~/WebUserControl.ascx");//Path to your user control item["ColumnUniqueName"].Controls.Add(uc); } } }Thanks,
Princy.
0
Sammy78
Top achievements
Rank 2
answered on 14 Jul 2010, 02:26 PM
Thanks a lot for the reply, Princy.
I'll try it out as soon as I can and will get back to you with the results.
Again, thank you
Sam
I'll try it out as soon as I can and will get back to you with the results.
Again, thank you
Sam
0
Sammy78
Top achievements
Rank 2
answered on 14 Jul 2010, 08:28 PM
Hi Princy,
I just wanted to let you knowe that your snippet worked like a charm. Thanks a lot for the help. Now all I need to figure out is how to get the values of the textboxes that are in the userControl. :)
Thanks again.
Sam
I just wanted to let you knowe that your snippet worked like a charm. Thanks a lot for the help. Now all I need to figure out is how to get the values of the textboxes that are in the userControl. :)
Thanks again.
Sam
0
Accepted
Princy
Top achievements
Rank 2
answered on 15 Jul 2010, 08:08 AM
Hello,
I guess you want to access the TextBox placed inside UserControl on an external event other than grid events. If so, you can access UserControl first using its ID, which is set in ItemCreated event and then the embedded TextBox control using FindControl() method. Check out the following code snippet.
C#:
Thanks,
Princy.
I guess you want to access the TextBox placed inside UserControl on an external event other than grid events. If so, you can access UserControl first using its ID, which is set in ItemCreated event and then the embedded TextBox control using FindControl() method. Check out the following code snippet.
C#:
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; if (item.ItemIndex == 3) { UserControl uc = (UserControl)Page.LoadControl("~/WebUserControl.ascx"); uc.ID = "MyUserControl"; item["ColumnUniqueName"].Controls.Add(uc); } } } protected void Button1_Click(object sender, EventArgs e) { GridDataItem item = (GridDataItem)RadGrid1.MasterTableView.Items[3]; // access the corresponding grid row UserControl uc = (UserControl)item["ColumnUniqueName"].FindControl("MyUserControl"); // access UserControl TextBox txt = (TextBox)uc.FindControl("TextBox1");//access the TextBox string value = txt.Text; }Thanks,
Princy.
0
Sammy78
Top achievements
Rank 2
answered on 15 Jul 2010, 02:51 PM
Hi Princy,
thanks for another quick reply. That's exactly what I'm trying to do. The only difference is that my userControl is built dynamically. Basically, it's a placeholder in which I add radNumericTextboxes, depending on the number entered in the previous page (3 users = 3 boxes). Here is the code:
VB:
I tried your code and it works great, but I can't get the UserControl, for some reason. Here is what I tried:
VB:
If you have any idea as to why I can't get any value for "uc", I would be very greatful.
Thanks again for all the help
Sam
thanks for another quick reply. That's exactly what I'm trying to do. The only difference is that my userControl is built dynamically. Basically, it's a placeholder in which I add radNumericTextboxes, depending on the number entered in the previous page (3 users = 3 boxes). Here is the code:
VB:
Dim nbreVoyageurs As Integer = 'number of clients
Dim deuxiemeLigne As Boolean = False Dim i As Integer = 0 Dim tableAnnulation As New Table Dim tRow As New TableRow For i = 0 To nbreVoyageurs - 1 Dim tCell As New TableCell TextBoxAnnul = New Telerik.Web.UI.RadNumericTextBox TextBoxAnnul.Width = 60 TextBoxAnnul.Skin = "Windows7" TextBoxAnnul.MaxValue = 200000 TextBoxAnnul.MinValue = 0 TextBoxAnnul.MaxLength = 3 TextBoxAnnul.NumberFormat.DecimalDigits = 2 TextBoxAnnul.NumberFormat.GroupSeparator = " " TextBoxAnnul.AllowOutOfRangeAutoCorrect = True TextBoxAnnul.ShowButton = False TextBoxAnnul.Text = 'text source If (i < 6) Then 'Pour inscrire les composantes dans la première ligne du tableau TextBoxAnnul.ID = "AnnulVoy" + (i + 1).ToString lblAnnulVoyageur = New Label lblAnnulVoyageur.Text = "Voyageur_" + (i + 1).ToString + ": " lblAnnulVoyageur.ID = "lblAnnulVoyageur" + (i + 1).ToString Else 'si on est rendu au 6ième élément, il faut changer de ligne du tableau If deuxiemeLigne = False Then tableAnnulation.Rows.Add(tRow) deuxiemeLigne = True tRow = New TableRow TextBoxAnnul.ID = "AnnulVoy" + (i + 1).ToString lblAnnulVoyageur = New Label lblAnnulVoyageur.Text = "Voyageur_" + (i + 1).ToString + ": " lblAnnulVoyageur.ID = "lblAnnulVoyageur" + (i + 1).ToString Else 'si on est déjà dans la deuxième ligne du tableau TextBoxAnnul.ID = "AnnulVoy" + (i + 1).ToString lblAnnulVoyageur = New Label lblAnnulVoyageur.Text = "Voyageur_" + (i + 1).ToString + ": " lblAnnulVoyageur.ID = "lblAnnulVoyageur" + (i + 1).ToString End If End If tCell.Controls.Add(lblAnnulVoyageur) tRow.Cells.Add(tCell) tCell = New TableCell tCell.Controls.Add(TextBoxAnnul) tRow.Cells.Add(tCell) Next tableAnnulation.Rows.Add(tRow) phNbreVoyageurs.Controls.Add(tableAnnulation)I tried your code and it works great, but I can't get the UserControl, for some reason. Here is what I tried:
VB:
Protected Sub btnGetValue_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnGetValue.Click Dim item As GridDataItem = DirectCast(rgRecommandation.MasterTableView.Items(3), GridDataItem) Dim uc As UserControl = DirectCast(item("Description").FindControl("NbreVoyageurs"), UserControl) Dim txt As RadNumericTextBox = DirectCast(uc.FindControl("AnnulVoy1"), RadNumericTextBox) lblMontant.Text = txt.TextEnd SubIf you have any idea as to why I can't get any value for "uc", I would be very greatful.
Thanks again for all the help
Sam
0
Sammy78
Top achievements
Rank 2
answered on 15 Jul 2010, 04:11 PM
Yes! I managed to get my value.
I reviewed your example and noticed that I had forgotten to add the id when I added the UC in the radGrid.
Seriously, thanks for all the help.
Have a good day.
Sincerely yours
Sam
I reviewed your example and noticed that I had forgotten to add the id when I added the UC in the radGrid.
Seriously, thanks for all the help.
Have a good day.
Sincerely yours
Sam