Greetings,
I am currently working on an ASP.NET WebForms application, which uses a Telerik RadTreeView.
The treeview uses has the tri state checkboxes active and gets populated server side. We first create a tree of stations (around 2500), which can contain other stations. After that, we populate the tree with datapoints by iterating over all stations and adding the datapoints with the Node.Add() Method.
So the structure is as follows:
Station
- Station 1
- Station 2
- Station 4
- DataPoint
- DataPoint
- Station 5
The checkboxes are used to show if any datapoint is already selected in the treeview and to select additional datapoints for a grouping.
There are multiple groups which can be switched between to see a different selection in the tree.
Therefore, it is necessary to add every datapoint that was already selected (and saved) to show the tri-state checkboxes correctly on page load.
After that a load on demand is possible.
What I tried so far:
Loading the stations and inserting the datapoints (20k objects) after adding the root node to the RadTreeView
Building the station tree is fast, but addings the nodes the the RadTreeView Control takes a long time
So my question is, is there a faster way to load about 20k objects into the tree, so on the change of grouping no new datapoints need to be loaded?
Or am I thinking this very wrong currently? Thank you in advance!
RadWindow is showing a tooltip with its ID in it. See attached image. How can I disable this?
Hi, my grid has many columns and some of them have very long header texts.
I already set <Resizing AllowColumnResize="true" AllowResizeToFit="true" ResizeGridOnColumnResize="true" />
However the header text are still clipped.
I would like to set the long header text to be shown as whole instead of clipped.
Please help! Thanks!
When right clicking on a scheduler's day, for instance, I can click on "New Appointment", and the popup box with "Options", "Cancel", etc. shows up to specify the Subject and/or options. Is there a way I can just click "New Appointment" and bypass that popup, and just create the new appointment? The box below is what I want to completely bypass. Any help is appreciated.
Edit: Looks like I posted this in wrong place. Now posted in feedback and bugs.
When assigning multiple resources and percentages, the first item in list always goes back to 100%.
It saves back to UI correctly but as soon as you leave or refresh page it goes back to 100% on first item and that's what's saved in database.
The online demo has the same code but demo doesn't save at all.
See attached screen shots.
I have a bound grid that contains an image. Since the image is about the size of a thumbnail...I want to give the user the ability to click the image and have it displayed in full. I figured a good way to do this would be to use a RadLightBox. Am I barking down the right path? Is there a better way?
<telerik:RadGrid ID="rgMain" runat="server" Width="100%" AutoGenerateColumns="False">
<MasterTableView EditMode="PopUp" ShowHeadersWhenNoRecords="True" EnableNoRecordsTemplate="True" DataKeyNames="RaceID" CommandItemDisplay="Top">
<CommandItemSettings ShowRefreshButton="False" ShowAddNewRecordButton="False" />
<Columns>
<telerik:GridBoundColumn UniqueName="RaceName" DataField="RaceName" HeaderText="Race Name"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="SeriesName" DataField="SeriesName" HeaderText="Series"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="RaceDesc" DataField="RaceDesc" HeaderText="Description"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="RaceDate" DataField="RaceDate" HeaderText="Date" DataFormatString="{0:MM/dd/yyyy}"></telerik:GridBoundColumn>
<telerik:GridHyperLinkColumn DataNavigateUrlFields="RaceRegLink" HeaderText="Registration Link" DataTextField="RaceRegLink" Target="_blank"></telerik:GridHyperLinkColumn>
</Columns>
<DetailTables>
<telerik:GridTableView Name="Members" DataKeyNames="MemberID,RaceID" ClientDataKeyNames="MemberID,RaceID" Width="100%" ShowFooter="True">
<ParentTableRelation>
<telerik:GridRelationFields MasterKeyField="RaceID" DetailKeyField="RaceID" />
</ParentTableRelation>
<NoRecordsTemplate>No records to display.</NoRecordsTemplate>
<Columns>
<telerik:GridTemplateColumn HeaderText="Member" UniqueName="Member">
<ItemTemplate>
<telerik:RadBinaryImage ID="imgProfPic" runat="server" ImageUrl="~/images/ProfilePicBlank.jpg" Height="50px" Width="50px"
ResizeMode="Fit" DataValue='<%# IIf(Eval("ProfPic") IsNot DBNull.Value, Eval("ProfPic"), New System.Byte(-1) {})%>'
AlternateText='<%# Eval("MemberID") %>' />
<asp:Label runat="server" Text='<%# Eval("FullName") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="Division" DataField="Division" HeaderText="Division"></telerik:GridBoundColumn>
</Columns>
<HeaderStyle Font-Bold="True" BackColor="Silver" />
</telerik:GridTableView>
</DetailTables>
<NoRecordsTemplate>
No records to display.
</NoRecordsTemplate>
<HeaderStyle Font-Bold="True" BackColor="#CCCCCC" />
</MasterTableView>
</telerik:RadGrid>
I followed the documentation example for using a check box column(see link below). The issue I'm having is when the BatchEditCommand event fires after the clicking the "Save Changes" item command button, the BatchEditCommand object is always empty so I cannot get the Hash table values to update the record without without using the Open-Edit click event.
Also, can someone provide a sample of using this method with a RadSwitch instead of a checkbox?
Thanks in advance for any help.
Editing Check Boxes Directly in Batch Mode
Markup
<telerik:RadGrid ID="grdCategory" runat="server" AutoGenerateColumns="false" CssClass="Gridheight4" Width="100%" AllowPaging="true" PageSize="7">
<ClientSettings>
<Scrolling AllowScroll="true" UseStaticHeaders="true" />
<KeyboardNavigationSettings AllowSubmitOnEnter="true" />
</ClientSettings>
<MasterTableView DataKeyNames="Category" EditMode="Batch" HeaderStyle-Font-Size="8pt" HeaderStyle-Font-Bold="true" ItemStyle-Font-Size="8pt" PagerStyle-AlwaysVisible="true" CommandItemDisplay="Top" InsertItemDisplay="Top"
AllowAutomaticUpdates="true" AllowAutomaticInserts="true" BatchEditingSettings-EditType="Row" BatchEditingSettings-OpenEditingEvent="Click">
<CommandItemSettings ShowSaveChangesButton="true" ShowCancelChangesButton="true" ShowRefreshButton="true"/>
<Columns>
<telerik:GridBoundColumn DataField="Category" UniqueName="Category" HeaderText="Category" DataType="System.String" ForceExtractValue="Always" ItemStyle-CssClass="maximize"></telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="Is_Active" UniqueName="Is_Active" HeaderText="Active" HeaderStyle-Width="80px">
<ItemTemplate>
<asp:CheckBox runat="server" ID="CheckBox1" Enabled="true" Checked='<%# Eval("Is_Active") %>' onclick="checkbox1Click(this, event);" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox runat="server" ID="CheckBox2" />
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridCheckBoxColumn DataField="CCD_Only" UniqueName="CCD_Only" HeaderText="CCD Only" HeaderTooltip="Show for CCD UMs Only.." DataType="System.Boolean"></telerik:GridCheckBoxColumn>
<telerik:GridCheckBoxColumn DataField="MMS_Only" UniqueName="MMS_Only" HeaderText="MMS Only" HeaderTooltip="Medication Management Only.." DataType="System.Boolean"></telerik:GridCheckBoxColumn>
<telerik:GridBoundColumn DataField="Comments" UniqueName="Comments" HeaderText="Comments" DataType="System.String"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Client Script
function checkbox1Click(sender, args) {
var grid = $find("<%= grdCategory.ClientID %>");
var batchEditingManager = grid.get_batchEditingManager();
var parentCell = $telerik.$(sender).closest("td")[0];
var initialValue = sender.checked;
batchEditingManager.changeCellValue(parentCell, initialValue);
}
VB Code Behind
Private Function CategoryData(Optional ByVal Command As String = "", Optional ByVal Category As String = "", Optional ByVal Is_Active As Boolean = True, Optional ByVal CCD_Only As Boolean = False, Optional ByVal MMS_Only As Boolean = False, Optional ByVal Comments As String = "") As DataTable
Dim strConn As String = ConfigurationManager.ConnectionStrings("UMDB").ToString
Dim strSQL As String = ""
Dim dt As DataTable = Nothing
Select Case Command
Case PerformInsertCommandName
strSQL = "EXEC dbo.usp_ins_Lookup_UM_Category "
strSQL &= "@Category = " & SQL_Prepare_String(Category)
strSQL &= ", @Is_Active = " & SQL_Prepare_Boolean(Is_Active)
strSQL &= ", @CCD_Only = " & SQL_Prepare_Boolean(CCD_Only)
strSQL &= ", @MMS_Only = " & SQL_Prepare_Boolean(MMS_Only)
strSQL &= ", @Comments = " & SQL_Prepare_String(Comments)
ExecuteSQL(strSQL, strConn)
Return dt
Case UpdateCommandName
strSQL = "EXEC dbo.usp_upd_Lookup_UM_Category "
strSQL &= "@Category = " & SQL_Prepare_String(Category)
strSQL &= ", @Is_Active = " & SQL_Prepare_Boolean(Is_Active)
strSQL &= ", @CCD_Only = " & SQL_Prepare_Boolean(CCD_Only)
strSQL &= ", @MMS_Only = " & SQL_Prepare_Boolean(MMS_Only)
strSQL &= ", @Comments = " & SQL_Prepare_String(Comments)
ExecuteSQL(strSQL, strConn)
Return dt
Case Else
strSQL = "EXEC dbo.usp_get_Lookup_UM_Category"
Dim ds As DataSet = GetDataSet(strSQL, 30, strConn)
dt = ds.Tables(0)
Return dt
End Select
End Function
'================
Private Sub grdCategory_PreRender(sender As Object, e As EventArgs) Handles grdCategory.PreRender
For Each column As GridColumn In grdCategory.Columns
If column.UniqueName = "Category" Then
If column.Owner.IsItemInserted Then
CType(column, GridEditableColumn).ReadOnly = False
Else
CType(column, GridEditableColumn).ReadOnly = True
End If
End If
Next
grdCategory.Rebind()
End Sub
'================
Private Sub grdCategory_BatchEditCommand(sender As Object, e As GridBatchEditingEventArgs) Handles grdCategory.BatchEditCommand
For Each command As GridBatchEditingCommand In e.Commands
Dim newValues As Hashtable = command.NewValues
Dim oldValues As Hashtable = command.OldValues
Dim strCategory As String = newValues("Category")
Dim blnActive As Boolean = newValues("Is_Active")
Dim blnCCDOnly As Boolean = newValues("CCD_Only")
Dim blnMMSOnly As Boolean = newValues("MMS_Only")
Dim strComments As String = newValues("Comments")
If command.Type = GridBatchEditingCommandType.Update Then
CategoryData("Update", strCategory, blnActive, blnCCDOnly, blnMMSOnly, strComments)
ElseIf command.Type = GridBatchEditingCommandType.Insert Then
CategoryData("Insert", strCategory, blnActive, blnCCDOnly, blnMMSOnly, strComments)
End If
Next
End Sub