<
telerik:GridTemplateColumn UniqueName="Item" HeaderText="Item" ReadOnly="true" SortExpression="ITEM">
<ItemTemplate>
<%
# setPosts(Convert.ToInt32(Eval("Posts")))%> -- this code sets a variabe in code behind so can be determined in next line
<%
if (Posts > 0)
{ %>
-- this is where I need the help
<a href="#" runat="server" onserverclick='<%# withPosts(Convert.ToInt32(Eval("ID"))) %>'><%# DataBinder.Eval(Container.DataItem, "Item")%> (<%# DataBinder.Eval(Container.DataItem, "Posts")%>)
</a>
<%} %>
<%
else
{ %>
<a href="#" onclick="openAddTopicWindow('<%# DataBinder.Eval(Container.DataItem, "ID") %>'); return false;"><%# DataBinder.Eval(Container.DataItem, "Item")%> (<%# DataBinder.Eval(Container.DataItem, "Posts")%>)
</a>
<%} %>
</ItemTemplate>
</telerik:GridTemplateColumn>
I have tried the built-in RadEditorStatistics module, but I want to customize the character count. It needs to be smaller and flush right, and I don't need a word count (does anyone?) Plus, I want the character count to freshen dynamically on every keystroke.
Anyway, has anyone done a custom character counter that dynamically shows the remaining characters?
Thanks.
| function updateAllChildren(nodes) |
| { |
| var i; |
| for (i=0; i<nodes.get_count(); i++) |
| { |
| nodes.getNode(i).set_checked(false); |
| if (nodes.getNode(i).get_nodes().get_count()> 0) |
| { |
| updateAllChildren(nodes.getNode(i).get_nodes()); |
| } |
| } |
| } |
| function clientNodeChecked(sender, eventArgs) |
| { |
| var selectedNode = eventArgs.get_node(); |
| var isSelected = selectedNode.get_checked(); |
| var currentNode = selectedNode.get_parent(); |
| var childNodes = selectedNode.get_nodes(); |
| // toggle node |
| selectedNode.set_checked(!isSelected); |
| if (isSelected) // If seleceted then push changes up hierarchy |
| { |
| while (currentNode.get_attributes().getAttribute("ParentID") != "0") |
| { |
| currentNode.set_checked(true); |
| currentNodecurrentNode = currentNode.get_parent(); |
| } |
| } |
| if (!isSelected)// force uncheck for all children |
| { |
| updateAllChildren(childNodes); |
| } |
| } |
protected
void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetInitialRowForSlots_New();
}
}
private void SetInitialRowForSlots_New()
{
DataTable dtSlots = new DataTable();
dtSlots.Columns.Add(
new DataColumn("SlotName", typeof(string)));
dtSlots.Columns.Add(
new DataColumn("FromTime", typeof(string)));
dtSlots.Columns.Add(
new DataColumn("ToTime", typeof(string)));
DataRow drSlot = dtSlots.NewRow();
drSlot[
"SlotName"] = string.Empty;
drSlot[
"FromTime"] = new TimeSpan(0, 0, 0);
drSlot[
"ToTime"] = new TimeSpan(0, 0, 0);
dtSlots.Rows.Add(drSlot);
gvWorkingHours_New.DataSource = dtSlots;
gvWorkingHours_New.DataBind();
}
protected void lnkbtnAddSlot_New_Click(object sender, EventArgs e)
{
DataTable dtSlots = new DataTable();
dtSlots.Columns.Add(
new DataColumn("SlotName", typeof(string)));
dtSlots.Columns.Add(
new DataColumn("FromTime", typeof(string)));
dtSlots.Columns.Add(
new DataColumn("ToTime", typeof(string)));
foreach (GridDataItem pkgItem in gvWorkingHours_New.MasterTableView.Items)
{
TextBox SlotName = pkgItem.FindControl("txtSlotName") as TextBox;
RadTimePicker FrTime = pkgItem.FindControl("rtpFromTime") as RadTimePicker;
RadTimePicker ToTime = pkgItem.FindControl("rtpToTime") as RadTimePicker;
DataRow dr = dtSlots.NewRow();
dr[
"SlotName"] = SlotName.Text;
dr[
"FromTime"] = new TimeSpan(((DateTime)(FrTime.DbSelectedDate)).TimeOfDay.Hours, ((DateTime)(FrTime.DbSelectedDate)).TimeOfDay.Minutes, 0);
dr[
"ToTime"] = new TimeSpan(((DateTime)(ToTime.DbSelectedDate)).TimeOfDay.Hours, ((DateTime)(ToTime.DbSelectedDate)).TimeOfDay.Minutes, 0);
dtSlots.Rows.Add(dr);
}
DataRow drEmpty = dtSlots.NewRow();
drEmpty[
"SlotName"] = string.Empty;
drEmpty[
"FromTime"] = new TimeSpan(0, 0, 0);
drEmpty[
"ToTime"] = new TimeSpan(0, 0, 0);
dtSlots.Rows.Add(drEmpty);
gvWorkingHours_New.DataSource = dtSlots;
gvWorkingHours_New.DataBind();
}
<asp:Panel ID="PanelUpdateProgress" runat="server">
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" MinDisplayTime="2000" >
<div class="divloadingbackground" id="divTitle2" runat="server">
<div class="divloading">
<div id="Img1" class="imageloading" />
<asp:Label ID="LabelLoadingText" CssClass="labelloading" runat="server" Text="Loading Data..."></asp:Label>
</div>
</div>
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="buttonSearch">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="divTitle2" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
</asp:Panel>
When I first come into the page and click the search button(buttonSearch), which is included in a separate div not shown here with other code, the loading image comes up covering the whole page just as I would like. However, when I do additional searches without leaving the page, the search itself executes, but the loading image does not come back up. Am I missing a property that must be set in order to have the loading image come up again.
Thanks for any help that anyone may have.
Aaron
