Hi,
I'm currently evaluating some RAD controls from Telerik, just right now I'm experimenting with the RadGrid.
So I have my grid control and enabled client-side binding for having
Ajax support. I created an appropriate WCF webservice for fetching the
data etc. Everything works really good, including paging etc. Now I
wanted to have a button column for deleting some items. I registered
the OnItemCommand event of the grid and implemented it accordingly on
the server-side. My ASPx code looks like this:
<telerik:RadGrid runat="server" ID="RadGrid1" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" GridLines="None" OnItemCommand="RadGrid1_ItemCommand"> <MasterTableView DataKeyNames="Id" ClientDataKeyNames="Id"> <Columns> <telerik:GridBoundColumn DataField="Firstname" HeaderText="Firstname" DataType="System.String"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Lastname" HeaderText="Lastname" DataType="System.String"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Age" HeaderText="Age" DataType="System.Int32"> </telerik:GridBoundColumn> <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn" ButtonType="ImageButton"> </telerik:GridButtonColumn> </Columns> <PagerStyle Mode="Slider" /> </MasterTableView> <ClientSettings> <DataBinding SelectMethod="GetSampleData" Location="Webservice/GridData.svc" SortParameterType="String"> </DataBinding> </ClientSettings></telerik:RadGrid>However when clicking on the appropriate button on a grid row the
event isn't fired, basically no postback to the server is being done. A
solution I found is to add the "EnablePostBackOnRowClick=true" to the ClientSettings, but this would cause a postback on each click on a row, which is not really desired.
Is there a better way to realizing this or does anybody have a hint what could be the problem??
My grid is showing a column that appears to be the row indicator column. I do not want a row indicator column. I have tried setting many attributes to turn it off. I can only assume that it's the row indicator column. I am not adding a column ahead of the edit column. How can I get the first column removed? See my aspx code below:
| <telerik:RadGrid ID="RadGridSignedSessions" Skin="Office2007" runat="server" Width="100%" |
| Height="100%" AutoGenerateColumns="False" PageSize="25" AllowSorting="True" AllowMultiRowSelection="False" |
| AllowPaging="True" GridLines="None" OnNeedDataSource="RadGridSignedSessions_NeedDataSource" |
| Style="border: 0; outline: none" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" |
| AllowAutomaticUpdates="True" EnableAJAX="True"> |
| <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> |
| <MasterTableView DataKeyNames="ID" AllowMultiColumnSorting="True" CommandItemDisplay="TopAndBottom" AutoGenerateColumns="False" RowIndicatorColumn-Visible="false"> |
| <Columns> |
| <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" HeaderStyle-Width="30px"> |
| </telerik:GridEditCommandColumn> |
| <telerik:GridBoundColumn Visible="false" DataField="ID" UniqueName="ID"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="TherapistName" HeaderText="Therapist/Teacher" |
| DataField="TherapistName" UniqueName="TherapistName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="PatientName" HeaderText="Participant/Patient" |
| DataField="PatientName" UniqueName="PatientName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="WorkStartTime" HeaderText="Service Date" |
| DataField="WorkStartTimeLocal" UniqueName="WorkStartTime"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="HoursWorked" HeaderText="Hours Worked" DataField="HoursWorked" |
| UniqueName="HoursWorked"> |
| </telerik:GridBoundColumn> |
| <telerik:GridCheckBoxColumn SortExpression="GuardianUnavailableToSign" HeaderText="Guardian/Supervisor Didn't Sign" |
| DataField="GuardianUnavailableToSign" UniqueName="GuardianUnavailableToSign"> |
| </telerik:GridCheckBoxColumn> |
| <telerik:GridCheckBoxColumn SortExpression="SessionApproved" HeaderText="Approved" |
| DataField="SessionApproved" UniqueName="SessionApproved"> |
| </telerik:GridCheckBoxColumn> |
| <telerik:GridButtonColumn ConfirmText="Delete this record?" ConfirmDialogType="RadWindow" |
| ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Delete" |
| UniqueName="DeleteColumn" HeaderStyle-Width="30px" > |
| </telerik:GridButtonColumn> |
| </Columns> |
| </MasterTableView> |
| <ClientSettings ReorderColumnsOnClient="True" AllowDragToGroup="false" AllowColumnsReorder="True" |
| EnablePostBackOnRowClick="True"> |
| <Resizing AllowRowResize="True" AllowColumnResize="True"></Resizing> |
| <Selecting AllowRowSelect="true" /> |
| <Scrolling AllowScroll="true" UseStaticHeaders="true" /> |
| <ClientEvents OnGridCreated="SignedSessionsGridCreated" /> |
| </ClientSettings> |
| </telerik:RadGrid> |
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" AllowSorting="true" Skin="Vista"> <MasterTableView DataKeyNames="HOLE_ID, HOLE_SORT"> <HeaderStyle HorizontalAlign="Center" /> <ItemStyle HorizontalAlign="Center" /> <AlternatingItemStyle HorizontalAlign="Center" /> <NoRecordsTemplate> <div style="width:100%; text-align:center; height:21px; padding:4px 4px 4px 10px;"> <asp:Label ID="lblNoRecords" runat="server" Text="No data exists for this Hole."></asp:Label> </div> </NoRecordsTemplate> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" /> </ClientSettings></telerik:RadGrid>Private colHeaderGroupList as List(of String) = GetColumnHeaderGroups()Private colHeaderList as List(of MyColumnData) = GetColumnHeaderData()Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init If Page.IsPostBack = False Then LoadColumns() End IfEnd SubPrivate Sub LoadColumns() 'clear columns RadGrid1.MasterTableView.Columns.Clear() 'add standard column Dim col1 As GridBoundColumn = New GridBoundColumn() RadGrid1.MasterTableView.Columns.Add(col1) With col1 .DataField = "HOLE_NO" .HeaderText = "Hole" .SortExpression = "HOLE_SORT" End With 'add elements as template columns to use double row headers For Each colHeader As String In colHeaderGroupList 'add column to grid Dim templateCol As GridTemplateColumn = New GridTemplateColumn() RadGrid1.MasterTableView.Columns.Add(templateCol) 'get just the columns for this group Dim thisGroup as List(of MyColumnData) = (From x in colHeaderList Where x.Group = colHeader Select x).ToList() 'create templates for column templateCol.HeaderTemplate = New MyDynamicHeaderTemplate(thisGroup) templateCol.ItemTemplate = New MyDynamicItemTemplate(thisGroup) NextEnd SubPrivate Class MyDynamicHeaderTemplate...End ClassPrivate Class MyDynamicItemTemplate...End Class
var multiPage = $find("<%= tabMultiPage.ClientID %>");in the below function:
function deleteTab(tabText) { var tabStrip = $find("<%= tabContainer.ClientID %>"); var multiPage = $find("<%= tabMultiPage.ClientID %>"); var tab = tabStrip.findTabByText(tabText); var pageView = tab.get_pageView(); var tabToSelect = tab.get_nextTab(); if (!tabToSelect) tabToSelect = tab.get_previousTab(); tabStrip.get_tabs().remove(tab); multiPage.get_pageViews().remove(pageView); if (tabToSelect) tabToSelect.set_selected(true); multiPage.commitChanges(); tabStrip.commitChanges(); }<add key="Telerik.TabStrip.Skin" value="Outlook" /> <add key="Telerik.Grid.Skin" value="Default" /> <add key="Telerik.TabStrip.EnableEmbeddedSkins" value="false" /> <add key="Telerik.TabStrip.EnableEmbeddedBaseStylesheet" value="false" />
function showSortOrder() { var grid = $find("<%=gridResults.ClientID %>") alert("Grid = " + grid); var mstrvw = grid.get_masterTableView(); alert("mstrvw = " + mstrvw); var sortExpressions = grid.get_masterTableView().get_sortExpressions(); alert("sortExpressions = " + sortExpressions); // alert("sortExpressions length = " + sortExpressions.length); var msg = "The current sort order is\n"; // for (i = 0; i < sortExpressions.length; i++) // { // var expression = sortExpressions[i]; // var fieldName = expression.get_fieldName(); // var sortOrder = expression.get_sortOrder(); // msg = msg + fieldName + " (" + sortOrder + ")\n" // } // alert(msg); alert(msg + sortExpressions.toString()); }