Issues:
1. When the DataListView is rebound (step 3 above), the DataPager control only displays 2 new page buttons. The additional page buttons which should be there do not appear until after one of the buttons have been clicked. For example, if 3 pages of results are returned then the DataPager will show [1, 2], and if I click on 1 or 2 then it is refreshed and shows [1, 2, 3, n....]
2. Another hideous problem is that the DataListView "OnPageIndexChanged" event goes into a loop on the server side (ouch!!!)
Please could you advise as there are no examples of binding the DataListView and RadDataPager using anything other than a static datasource.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
IList<
EngineerHelper.EngProfile
> engProfiles = EngineerHelper.return_RandomEngineers(5);
RadListView1.DataSource = engProfiles;
RadListView1.DataBind();
}
}
protected void RadListView2_PageIndexChanged(object sender, RadListViewPageChangedEventArgs e)
{
IList<
EngineerHelper.EngProfile
> engProfiles = EngineerHelper.return_RandomEngineers(0);
RadListView1.DataSource = engProfiles;
RadListView1.DataBind();
}
protected void returnEngineers(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
IList<
EngineerHelper.EngProfile
> engProfiles = EngineerHelper.return_SelectedEngineers(EngineerHelper.engineerIDsBySkillGenre(Convert.ToInt16(e.Value)));
RadListView1.DataSource = engProfiles;
RadListView1.DataBind();
}
<
telerik:RadGrid
AllowMultiRowSelection
=
"True"
ID
=
"RadGrid1"
runat
=
"server"
DataSourceID
=
"AccessDataSource1"
GridLines
=
"None"
OnPreRender
=
"RadGrid1_PreRender"
AllowFilteringByColumn
=
"True"
AllowPaging
=
"True"
AllowSorting
=
"True"
PageSize
=
"5"
AutoGenerateEditColumn
=
"True"
>
<
MasterTableView
AutoGenerateColumns
=
"False"
DataKeyNames
=
"CustomerID"
DataSourceID
=
"AccessDataSource1"
>
<
RowIndicatorColumn
Visible
=
"False"
>
<
HeaderStyle
Width
=
"20px"
/>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
Resizable
=
"False"
Visible
=
"False"
>
<
HeaderStyle
Width
=
"20px"
/>
</
ExpandCollapseColumn
>
<
Columns
> <%-- removed onkeydown event from all text boxes --%>
<
telerik:GridBoundColumn
DataField
=
"CustomerID"
HeaderText
=
"CustomerID"
ReadOnly
=
"True"
SortExpression
=
"CustomerID"
UniqueName
=
"CustomerID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"CompanyName"
HeaderText
=
"CompanyName"
SortExpression
=
"CompanyName"
UniqueName
=
"CompanyName"
>
<
ItemTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBox1"
Runat
=
"server"
DataTextField
=
"CompanyName"
AllowCustomText
=
"True"
DataValueField
=
"CompanyName"
Text
=
"select value"
AutoPostBack
=
"True"
>
<
Items
>
<
telerik:RadComboBoxItem
runat
=
"server"
Text
=
"arr"
Value
=
"arr"
/>
<
telerik:RadComboBoxItem
runat
=
"server"
Text
=
"dep"
Value
=
"dep"
/>
</
Items
>
</
telerik:RadComboBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"ContactName"
HeaderText
=
"ContactName"
SortExpression
=
"ContactName"
UniqueName
=
"ContactName"
>
<
ItemTemplate
>
<
asp:TextBox
ID
=
"box2"
runat
=
"server"
Text='<%#Eval("ContactName") %>'></
asp:TextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"ContactTitle"
HeaderText
=
"ContactTitle"
SortExpression
=
"ContactTitle"
UniqueName
=
"ContactTitle"
>
<
ItemTemplate
>
<
asp:TextBox
ID
=
"box3"
runat
=
"server"
Text='<%#Eval("ContactTitle") %>'></
asp:TextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"Address"
HeaderText
=
"Address"
SortExpression
=
"Address"
UniqueName
=
"Address"
>
<
ItemTemplate
>
<
asp:TextBox
ID
=
"box4"
runat
=
"server"
Text='<%#Eval("Address") %>'></
asp:TextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"City"
HeaderText
=
"City"
SortExpression
=
"City"
UniqueName
=
"City"
>
<
ItemTemplate
>
<
asp:TextBox
ID
=
"box5"
runat
=
"server"
Text='<%#Eval("City") %>'></
asp:TextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
/Columns>
</
MasterTableView
>
<
ClientSettings
>
<
Selecting
AllowRowSelect
=
"True"
/>
<
ClientEvents
OnKeyPress
=
"keyPress"
OnGridCreated
=
"gridCreated"
OnRowSelecting
=
"rowSelecting"
/>
</
ClientSettings
>
<
EditItemStyle
BackColor
=
"Yellow"
/>
</
telerik:RadGrid
>
<
script
type
=
"text/javascript"
>
var RadGrid1;
var columnCounter = 0;
var rowCounter = 0;
var currentCell = null;
function getCell(grid) {
var cell;
var columnName = grid.get_masterTableView().get_columns()[columnCounter].get_uniqueName();
var row = grid.get_masterTableView().get_dataItems()[rowCounter];
cell = grid.get_masterTableView().getCellByColumnUniqueName(row, columnName);
return cell;
}
function getColumnName(grid) {
return grid.get_masterTableView().get_columns()[columnCounter].get_uniqueName();
}
function handleKeyPress(keyCode) {
if (keyCode == 39) {
if (columnCounter <
RadGrid1.get_masterTableView
().get_columns().length - 1) {
if (currentCell != null) {
currentCell.className
=
""
;
}
columnCounter++;
currentCell
=
getCell
(RadGrid1);
currentCell.className
=
"class1"
;
if (getColumnName(RadGrid1) == "CustomerID") {
currentCell.className
=
"class1"
;
}
if (getColumnName(RadGrid1) == "CompanyName") {
$telerik.findElement(currentCell, "RadComboBox1").focus();
}
if (getColumnName(RadGrid1) == "ContactName") {
$telerik.findElement(currentCell, "box2").focus();
}
if (getColumnName(RadGrid1) == "ContactTitle") {
$telerik.findElement(currentCell, "box3").focus();
}
if (getColumnName(RadGrid1) == "Address") {
$telerik.findElement(currentCell, "box4").focus();
}
if (getColumnName(RadGrid1) == "City") {
$telerik.findElement(currentCell, "box5").focus();
}
if (getColumnName(RadGrid1) == "Region") {
$telerik.findElement(currentCell, "box6").focus();
}
if (getColumnName(RadGrid1) == "PostalCode") {
$telerik.findElement(currentCell, "box7").focus();
}
if (getColumnName(RadGrid1) == "Phone") {
$telerik.findElement(currentCell, "box8").focus();
}
if (getColumnName(RadGrid1) == "Fax") {
$telerik.findElement(currentCell, "box9").focus();
}
}
}
else if (keyCode == 37) {
if (currentCell != null) {
currentCell.className
=
""
;
}
if (columnCounter > 0) {
columnCounter--;
currentCell = getCell(RadGrid1);
currentCell.className = "class1";
}
if (getColumnName(RadGrid1) == "CustomerID") {
currentCell.className = "class1";
}
if (getColumnName(RadGrid1) == "CompanyName") {
$telerik.findElement(currentCell, "RadComboBox1").focus();
}
if (getColumnName(RadGrid1) == "ContactName") {
$telerik.findElement(currentCell, "box2").focus();
}
if (getColumnName(RadGrid1) == "ContactTitle") {
$telerik.findElement(currentCell, "box3").focus();
}
if (getColumnName(RadGrid1) == "Address") {
$telerik.findElement(currentCell, "box4").focus();
}
if (getColumnName(RadGrid1) == "City") {
$telerik.findElement(currentCell, "box5").focus();
}
if (getColumnName(RadGrid1) == "Region") {
$telerik.findElement(currentCell, "box6").focus();
}
if (getColumnName(RadGrid1) == "PostalCode") {
$telerik.findElement(currentCell, "box7").focus();
}
if (getColumnName(RadGrid1) == "Phone") {
$telerik.findElement(currentCell, "box8").focus();
}
if (getColumnName(RadGrid1) == "Fax") {
$telerik.findElement(currentCell, "box9").focus();
}
}
else if (keyCode == 38) {
if (rowCounter > 0) {
if (currentCell != null) {
currentCell.className = "";
}
rowCounter--;
currentCell = getCell(RadGrid1);
currentCell.className = "class1";
}
if (getColumnName(RadGrid1) == "CustomerID") {
currentCell.className = "class1";
}
if (getColumnName(RadGrid1) == "CompanyName") {
$telerik.findElement(currentCell, "RadComboBox1").focus();
}
if (getColumnName(RadGrid1) == "ContactName") {
$telerik.findElement(currentCell, "box2").focus();
}
if (getColumnName(RadGrid1) == "ContactTitle") {
$telerik.findElement(currentCell, "box3").focus();
}
if (getColumnName(RadGrid1) == "Address") {
$telerik.findElement(currentCell, "box4").focus();
}
if (getColumnName(RadGrid1) == "City") {
$telerik.findElement(currentCell, "box5").focus();
}
if (getColumnName(RadGrid1) == "Region") {
$telerik.findElement(currentCell, "box6").focus();
}
if (getColumnName(RadGrid1) == "PostalCode") {
$telerik.findElement(currentCell, "box7").focus();
}
if (getColumnName(RadGrid1) == "Phone") {
$telerik.findElement(currentCell, "box8").focus();
}
if (getColumnName(RadGrid1) == "Fax") {
$telerik.findElement(currentCell, "box9").focus();
}
}
else if (keyCode == 40) {
if (rowCounter < RadGrid1.get_masterTableView().get_dataItems().length - 1) {
if (currentCell != null) {
currentCell.className = "";
}
rowCounter++;
currentCell = getCell(RadGrid1);
currentCell.className = "class1";
}
if (getColumnName(RadGrid1) == "CustomerID") {
currentCell.className = "class1";
}
if (getColumnName(RadGrid1) == "CompanyName") {
$telerik.findElement(currentCell, "RadComboBox1").focus();
}
if (getColumnName(RadGrid1) == "ContactName") {
$telerik.findElement(currentCell, "box2").focus();
}
if (getColumnName(RadGrid1) == "ContactTitle") {
$telerik.findElement(currentCell, "box3").focus();
}
if (getColumnName(RadGrid1) == "Address") {
$telerik.findElement(currentCell, "box4").focus();
}
if (getColumnName(RadGrid1) == "City") {
$telerik.findElement(currentCell, "box5").focus();
}
if (getColumnName(RadGrid1) == "Region") {
$telerik.findElement(currentCell, "box6").focus();
}
if (getColumnName(RadGrid1) == "PostalCode") {
$telerik.findElement(currentCell, "box7").focus();
}
if (getColumnName(RadGrid1) == "Phone") {
$telerik.findElement(currentCell, "box8").focus();
}
if (getColumnName(RadGrid1) == "Fax") {
$telerik.findElement(currentCell, "box9").focus();
}
}
}
function textBoxKeyPress(e) {
var evt = e ? e : window.event;
//focus next control in the cell
//or if not any, continue to next cell.
handleKeyPress(e.keyCode);
}
function keyPress(sender, args) {
var keyCode = args.get_keyCode();
handleKeyPress(keyCode);
}
function gridCreated(sender, args) {
RadGrid1 = sender;
currentCell = RadGrid1.get_masterTableView().getCellByColumnUniqueName(RadGrid1.get_masterTableView().get_dataItems()[0], "CustomerID");
currentCell.className = "class1";
}
function rowSelecting() {
return false;
}
<
telerik:RadCodeBlock ID="RadCodeBlock2" runat="server">
<script type="text/javascript">
var parent_window = window;
function openNewVenWin() {
var oWnd1 = radopen("Vendor_Add.aspx", "RadWindow1");
}
function openEditVenWin(vendorCode) {
var oWnd2 = radopen("Vendor_Edit.aspx?ID=" + vendorCode, "RadWindow2");
}
function openMaintWin() {
var oWnd3 = radopen("Maintenance.aspx", "RadWindow3");
}
function CloseOnReload() {
$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest();
}
function confirmDelete(vendor) {
confirm("Are you sure that you want to delete " + vendor + "?");
}
</script>
</telerik:RadCodeBlock>
<
telerik:RadWindowManager ID="RadWindowManager1" ShowContentDuringLoad="false" VisibleStatusbar="false"
ReloadOnShow="true" runat="server" Skin="Sunset">
<Windows>|
<telerik:RadWindow ReloadOnShow="true" ID="RadWindow1"
Width="880px" Height="600px" Title="Add New Vendor" Behaviors="Close, Move, Resize, Maximize"
runat="server" NavigateUrl="Vendor_Add.aspx" Modal="true">
</telerik:RadWindow>
<telerik:RadWindow ReloadOnShow="true" ID="RadWindow2"
Width="880px" Height="600px" Title="Edit Vendor" Behaviors="Close, Move, Resize, Maximize"
runat="server" NavigateUrl="Vendor_Edit.aspx" Modal="true">
</telerik:RadWindow>
<telerik:RadWindow O ReloadOnShow="true" ID="RadWindow3"
Width="880px" Height="600px" Title="Maintenance" Behaviors="Close, Move, Resize, Maximize"
runat="server" NavigateUrl="Maintenance.aspx" Modal="true">
</telerik:RadWindow>
</Windows>
</telerik:RadWindowManager>
This is the button that I am selecting to open up the radWindow:
<asp:Button ID="editButton" style="text-decoration:none" CommandName="EditButton" runat="server"
Text="Edit" OnClientClick='<%# Eval("VendorCode", "return openEditVenWin(\"{0}\")")%>' >
</asp:Button>
RadAjaxManager on parent page:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="radGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="radGrid" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
Child page:
<telerik:RadCodeBlock ID="RadCodeBlock2" runat="server">
<script type="text/javascript">
function GetRadWindow() {
var oWindow = null;
if (window.radWindow)
oWindow = window.radWindow;
else if (window.frameElement.radWindow)
oWindow = window.frameElement.radWindow;
return oWindow;
}
function closeWin() {
GetRadWindow().close();
}
function CloseAndRedirect(sender, args) {
GetRadWindow().close();
GetRadWindow().BrowserWindow.location.reload();
GetRadWindow().BrowserWindow.location.href = 'Checklist.aspx'; //Redirect to new url
// //GetRadWindow().BrowserWindow.location.reload('Checklist.aspx');
// GetRadWindow().close(); //closes the window
}
function confirmDelete(vendor) {
confirm("Are you sure that you want to delete " + vendor + "?");
}
</script>
</telerik:RadCodeBlock>
RadAjaxManager on child:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="main">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="main" />
<telerik:AjaxUpdatedControl ControlID="blistErrors" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
I have a mode in application that uses radeditor where a certain role, call it “user” has no ability to modify content other than through 3 custom “note annotation” buttons on custom tool bar and in the context menu (add note, delete note, modify note). I figure there are two ways of doing this with radeditor;
1. Use Design mode and when the ‘user role’ is detected go into design mode remove all the tool bars except the one that has the 3 annotation buttons remove all context menus except the 3 annotation buttons. I can disable content by catching all keystokes (that I want to catch) in a client side key event handler. (This mode is the one I’m currently coding to at the moment)
Problems with this method:
1. I have some bordered colored span tags that the “user role” can grab with the mouse and move around, which I would like to disable.
2. Some content is in tables and the “user role” can size the borders, which I would like to disable.
3. All tables even with invisible borders can have their border sized modified by the “user role”
2. Use Preview mode. I can enable the three button based on this support article http://www.telerik.com/support/kb/aspnet-ajax/editor/enabling-print-button-in-preview-mode.aspx . Here there is not the problems listed in #1 but there are other problems introduced;
Problems with this method (so far)
1. Some html document elements don’t work, like getElementById which is essential for inserting annotations into document
2. It does not appear that the editor content can be modified by client side programming.
3. Cursor selection is disabled
If I could overcome the problems for either 1 or 2 I think I could fulfill my “user role” requirement with limited user editing via client/server program control
Thank you for any thoughts on the issue.