David Kucharski
Top achievements
Rank 1
David Kucharski
asked on 11 Feb 2013, 06:19 PM
I am buiding my RadGrid in the Code-Behind because it could change upon a post-back. I am adding my columns one at a time and binding them to the columns within my SqlDataSource. One of the types is the GridCheckBoxColumn.
I set the DataField and HeaderText. The DataField is a column that is a BIT type in Sql Server. I even tried TinyInt.
When I run my program I get an error stating 'String was not recognized as a valid Boolean'.
I am setting the RadGrid's DataSourceID to a asp:SqlDataSource that is a select statement.
How do I get around this error?
I set the DataField and HeaderText. The DataField is a column that is a BIT type in Sql Server. I even tried TinyInt.
When I run my program I get an error stating 'String was not recognized as a valid Boolean'.
I am setting the RadGrid's DataSourceID to a asp:SqlDataSource that is a select statement.
How do I get around this error?
6 Answers, 1 is accepted
0
Shinu
Top achievements
Rank 2
answered on 12 Feb 2013, 07:26 AM
Hi,
I have tried the same scenario with GridCheckBoxColumn bound to a boolean field(bit type in sql server) and it is working fine. Here is the sample code that I tried which worked as expected.
Check the following post which discusses the same issue. Please try the following code in ItemDataBound event as explained in the forum.
Thanks,
Shinu
I have tried the same scenario with GridCheckBoxColumn bound to a boolean field(bit type in sql server) and it is working fine. Here is the sample code that I tried which worked as expected.
protected void Page_Init(object sender, System.EventArgs e){ RadGrid1 = new RadGrid(); RadGrid1.ID = "RadGrid1"; GridCheckBoxColumn check; check = new GridCheckBoxColumn(); RadGrid1.MasterTableView.Columns.Add(check); check.DataField = "bitField"; check.HeaderText = "bitField"; PlaceHolder1.Controls.Add(RadGrid1);}Check the following post which discusses the same issue. Please try the following code in ItemDataBound event as explained in the forum.
Thanks,
Shinu
0
David Kucharski
Top achievements
Rank 1
answered on 12 Feb 2013, 05:18 PM
Thanks for the insight but unfortunately I am still having issues. To clarify what I am trying to do, I have added my code. The grid will not be created on my page until I click a submit button. Here is my aspx code.
Upon clicking the submit button the following code is fired.
On Page_Load, I set up my SqlDataSource and set the AJAX Settings.
On the Submit Click, I am setting up my RadGrid1 and calling a second procedure to create my columns. In the column create procedure I am either adding a CheckBoxColumn or BoundColumn
then I have my RadGrid1_ItemDataBound procedure. The funny thing is, the system never gets into the If statement because it is always seeing the e.Item as a GridPagerItem instead of a GridDataItem. If I comment out the code under the If block in the columnCreation function, the RadGrid1_ItemDataBound procedure recognizes the e.Item as a GridDataItem, but since I did not set the cell type to GridCheckBoxColumn, I cannot do what you were having me do.
Please let me know what I am doing wrong.
Thanks again.
<body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" /> <asp:Button ID="submit" Text="submit" runat="server" /> <telerik:RadGrid ID="RadGrid1" runat="server"></telerik:RadGrid> <asp:SqlDataSource ID="sds1" ProviderName="System.Data.SqlClient" runat="server" /> </form> </body>Upon clicking the submit button the following code is fired.
On Page_Load, I set up my SqlDataSource and set the AJAX Settings.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load sds1.ConnectionString = ConfigurationManager.ConnectionStrings("iAnalyzeConnectionStringTest").ConnectionString sds1.SelectCommand = "SELECT [ID], [VendorListID], [Geography], [CirculationTypeDescription] " & _ ",[HouseHold_Count] ,[TotalCoverage] ,[TotalCirculationForGeography] ,[LocationMarket] ,[LocationName]" & _ ",[LocationNumber] ,[Distance] ,[Sales] ,[TotalSales] ,[BOS] ,[CumeBOS] ,[SPH] ,[SPHIndex]" & _ ",[SundaySelected] ,[SundayApplied] ,[Sunday] ,[SundayForced] ,[SundayCoverage] ,[SundayZones] ,[SundayVersion]" & _ ",[SundayVersionID] ,[SundayVersionOverrideInd] ,[SundayDeliveryCode] ,[SundayDeliveryCodeID] ,[SundaySubVersionCategory] " & _ "FROM [iBuy].[iBuy].[TMP_WB_GeographySelectionDetails204738]" sds1.DataBind() RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadGrid1, RadGrid1) End SubOn the Submit Click, I am setting up my RadGrid1 and calling a second procedure to create my columns. In the column create procedure I am either adding a CheckBoxColumn or BoundColumn
Private Sub submit_Click(sender As Object, e As System.EventArgs) Handles submit.Click Dim sundayGroup As GridColumnGroup = New GridColumnGroup RadGrid1.MasterTableView.ColumnGroups.Add(sundayGroup) sundayGroup.HeaderText = "Sunday" sundayGroup.Name = "sundayColumns" sundayGroup.HeaderStyle.HorizontalAlign = HorizontalAlign.Center RadGrid1.DataSourceID = "sds1" RadGrid1.AllowPaging = True RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric RadGrid1.AutoGenerateColumns = False RadGrid1.ShowStatusBar = True RadGrid1.AllowSorting = True RadGrid1.MasterTableView.PageSize = 100 RadGrid1.ClientSettings.Scrolling.AllowScroll = True RadGrid1.ClientSettings.Scrolling.UseStaticHeaders = True RadGrid1.ClientSettings.Scrolling.SaveScrollPosition = True RadGrid1.MasterTableView.Width = Unit.Percentage(100) RadGrid1.MasterTableView.DataKeyNames = New String() {"VendorListID"} columnCreation("Geography", "Geography", RadGrid1) columnCreation("Circ Type", "CirculationTypeDescription", RadGrid1) columnCreation("Household", "HouseHold_Count", RadGrid1) columnCreation("Total Cov", "TotalCoverage", RadGrid1) columnCreation("Location Market", "LocationMarket", RadGrid1) columnCreation("Location Number", "LocationNumber", RadGrid1) columnCreation("Location Name", "LocationName", RadGrid1) columnCreation("Distance", "Distance", RadGrid1) columnCreation("Sales", "Sales", RadGrid1) columnCreation("Total Sales", "TotalSales", RadGrid1) columnCreation("BOS", "BOS", RadGrid1) columnCreation("Cume BOS", "CumeBOS", RadGrid1) columnCreation("SPH", "SPH", RadGrid1) columnCreation("SPH Index", "SPHIndex", RadGrid1) columnCreation("Selected", "SundaySelected", RadGrid1) columnCreation("Forced", "SundayForced", RadGrid1) columnCreation("Applied Circ", "SundayApplied", RadGrid1) columnCreation("Circ", "Sunday", RadGrid1) columnCreation("Cov", "SundayCoverage", RadGrid1) columnCreation("Zone", "SundayZones", RadGrid1) columnCreation("Version", "SundayVersion", RadGrid1) columnCreation("Sub-Version", "SundaySubVersionCategory", RadGrid1) columnCreation("Delivery Code", "SundayDeliveryCode", RadGrid1) End SubPrivate Sub columnCreation(ByVal colName As String, ByVal fieldName As String, ByVal oRadGrid As RadGrid) If colName = "Selected" Or colName = "Forced" Then Dim columnCheckBox As New GridCheckBoxColumn oRadGrid.MasterTableView.Columns.Add(columnCheckBox) columnCheckBox.DataField = fieldName columnCheckBox.HeaderText = colName If Left(fieldName, 6) = "Sunday" Then columnCheckBox.ColumnGroupName = "sundayColumns" End If Else Dim column As New GridBoundColumn oRadGrid.MasterTableView.Columns.Add(column) column.DataField = fieldName column.HeaderText = colName If Left(fieldName, 6) = "Sunday" Then column.ColumnGroupName = "sundayColumns" End If End If End Subthen I have my RadGrid1_ItemDataBound procedure. The funny thing is, the system never gets into the If statement because it is always seeing the e.Item as a GridPagerItem instead of a GridDataItem. If I comment out the code under the If block in the columnCreation function, the RadGrid1_ItemDataBound procedure recognizes the e.Item as a GridDataItem, but since I did not set the cell type to GridCheckBoxColumn, I cannot do what you were having me do.
Private Sub RadGrid1_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound If (TypeOf (e.Item) Is GridDataItem) Then Dim dataBoundItem As GridDataItem = e.Item Dim dataRow As DataRowView = dataBoundItem.DataItem Dim chk As CheckBox = dataBoundItem("SundaySelected").Controls(0) Dim chkValue As String = dataRow("SundaySelected").ToString() If chkValue = "1" Then chk.Checked = True Else chk.Checked = False End If If dataBoundItem("TotalCoverage").Text > 0 And UCase(Request("TargetGeo")) <> "TRUE" Then dataBoundItem("TotalCoverage").Attributes.Add("onClick", "Javascript:fnOpenGeoInfoView('" & dataBoundItem("Geography").Text.ToString.Trim & "'," & 1 & "," & 2 & ")") dataBoundItem("TotalCoverage").CssClass = "GridLink" End If End If End SubPlease let me know what I am doing wrong.
Thanks again.
0
Hello,
Note that if you want to change the RadGrid structure dynamically you have to do that on Page_Init. You could check out the following help article where is demonstrated how you can achieve that.
All the best,
Kostadin
the Telerik team
Note that if you want to change the RadGrid structure dynamically you have to do that on Page_Init. You could check out the following help article where is demonstrated how you can achieve that.
All the best,
Kostadin
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
Shinu
Top achievements
Rank 2
answered on 14 Feb 2013, 12:26 PM
Hi David,
I have created a sample with your approach and it is working fine at my end. It is firing ItemDataBound event and binding the corresponding data to CheckBoxColumn. Please have a look into the following code.
Please note here my DataField 'IsApproved' is of datatype bit in my database.
ASPX:
VB:
-Shinu.
I have created a sample with your approach and it is working fine at my end. It is firing ItemDataBound event and binding the corresponding data to CheckBoxColumn. Please have a look into the following code.
Please note here my DataField 'IsApproved' is of datatype bit in my database.
ASPX:
<form id="form1" runat="server"> <div> <asp:ScriptManager ID="scr" runat="server"> </asp:ScriptManager> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" /> <asp:Button ID="submit" Text="submit" runat="server" onclick="submit_Click" /> <telerik:RadGrid ID="RadGrid1" runat="server" onitemdatabound="RadGrid1_ItemDataBound"> </telerik:RadGrid> <asp:SqlDataSource ID="sds1" ProviderName="System.Data.SqlClient" runat="server" /> </div> </form>VB:
Protected Sub Page_Load(sender As Object, e As EventArgs) sds1.ConnectionString = ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString sds1.SelectCommand = "SELECT ID,Name,IsApproved FROM BigField" sds1.DataBind() RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadGrid1, RadGrid1)End SubProtected Sub submit_Click(sender As Object, e As EventArgs) RadGrid1.DataSourceID = "sds1" RadGrid1.AllowPaging = True RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric RadGrid1.AutoGenerateColumns = False RadGrid1.ShowStatusBar = True RadGrid1.AllowSorting = True RadGrid1.MasterTableView.PageSize = 100 RadGrid1.ClientSettings.Scrolling.AllowScroll = True RadGrid1.ClientSettings.Scrolling.UseStaticHeaders = True RadGrid1.ClientSettings.Scrolling.SaveScrollPosition = True RadGrid1.MasterTableView.Width = Unit.Percentage(100) RadGrid1.MasterTableView.DataKeyNames = New String() {"ID"} columnCreation("First Name", "Name", RadGrid1) columnCreation("Approved", "IsApproved", RadGrid1)End SubPrivate Sub columnCreation(colName As String, fieldName As String, oRadGrid As RadGrid) If colName = "Approved" Then Dim columnCheckBox As New GridCheckBoxColumn() oRadGrid.MasterTableView.Columns.Add(columnCheckBox) columnCheckBox.UniqueName = fieldName columnCheckBox.DataField = fieldName columnCheckBox.HeaderText = colName Else Dim column As New GridBoundColumn() oRadGrid.MasterTableView.Columns.Add(column) column.UniqueName = fieldName column.DataField = fieldName column.HeaderText = colName End IfEnd SubProtected Sub RadGrid1_ItemDataBound(sender As Object, e As GridItemEventArgs) If TypeOf e.Item Is GridDataItem Then Dim dataBoundItem As GridDataItem = DirectCast(e.Item, GridDataItem) Dim dataRow As DataRowView = DirectCast(dataBoundItem.DataItem, DataRowView) Dim chk As CheckBox = DirectCast(dataBoundItem("IsApproved").Controls(0), CheckBox) Dim chkValue As String = dataRow("IsApproved").ToString() If chkValue = "True" Then chk.Checked = True Else chk.Checked = False End If End IfEnd Sub-Shinu.
0
David Kucharski
Top achievements
Rank 1
answered on 19 Feb 2013, 03:38 PM
Shinu,
Thank you for the help and I am going to try this. One further question, if I click the checkbox on/off will the value persist upon paging or sorting? The reason I ask is I read documentation that you need to setup the grid through the page_init for viewstate to persist.
Let me know.
Thank you for the help and I am going to try this. One further question, if I click the checkbox on/off will the value persist upon paging or sorting? The reason I ask is I read documentation that you need to setup the grid through the page_init for viewstate to persist.
Let me know.
0
Hello David,
As I already mentioned in my previous reply you could check out the following help topic where is demonstrated how to achieve your scenario.
Regards,
Kostadin
the Telerik team
As I already mentioned in my previous reply you could check out the following help topic where is demonstrated how to achieve your scenario.
Regards,
Kostadin
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.