Hi Guys
Design:
Javascript:
Code:
Please help
Thanks ahead
Amit Jain
I have taken one grid and one RadNotification control. And so, When new mail comes, notification works. But Code of refreshing the RadGrid doesn't work properly. I have the following code:
Design:
<
telerik:RadPane
runat
=
"server"
ID
=
"RadPane1"
>
<
telerik:RadToolBar
runat
=
"server"
ID
=
"RadToolBar1"
CssClass
=
"inbox-search-toolbar"
OnClientButtonClicked
=
"onButtonClicked"
OnButtonClick
=
"RadToolBar1_ButtonClick"
EnableViewState
=
"false"
>
<
Items
>
<
telerik:RadToolBarButton
ImageUrl
=
"~/Images/print.gif"
Enabled
=
"false"
/>
<
telerik:RadToolBarButton
ImageUrl
=
"~/Images/move.gif"
Enabled
=
"false"
/>
<
telerik:RadToolBarButton
ImageUrl
=
"~/Images/delete_inbox.gif"
Value
=
"Delete"
CommandName
=
"delete"
/>
<
telerik:RadToolBarButton
IsSeparator
=
"true"
/>
<
telerik:RadToolBarButton
Text
=
"Reply"
ImageUrl
=
"~/Images/reply.gif"
Value
=
"Reply"
CommandName
=
"reply"
/>
<
telerik:RadToolBarButton
Value
=
"searchTextBoxButton"
CommandName
=
"searchText"
>
<
ItemTemplate
>
<
telerik:RadTextBox
runat
=
"server"
ID
=
"RadTextBox1"
EmptyMessage
=
"Search Inbox"
CssClass
=
"inbox-search-textbox"
Width
=
"300px"
ClientEvents-OnKeyPress
=
"onKeyPress"
/>
</
ItemTemplate
>
</
telerik:RadToolBarButton
>
<
telerik:RadToolBarButton
ImageUrl
=
"~/Images/search.gif"
Value
=
"search"
CommandName
=
"doSearch"
/>
<
telerik:RadToolBarButton
ImageUrl
=
"~/Images/icons/MailSettings.png"
CommandName
=
"settings"
/>
</
Items
>
</
telerik:RadToolBar
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"grdMessage"
DataSourceID
=
"LinqDataSource1"
AutoGenerateColumns
=
"false"
GridLines
=
"None"
Height
=
"500px"
BorderWidth
=
"0"
AllowSorting
=
"true"
Style
=
"border: 0; outline: none;"
ShowGroupPanel
=
"true"
OnItemCommand
=
"grdMessage_ItemCommand"
AllowMultiRowSelection
=
"true"
OnRowDrop
=
"grdMessage_RowDrop"
>
<
ClientSettings
EnablePostBackOnRowClick
=
"true"
AllowDragToGroup
=
"true"
EnableAlternatingItems
=
"false"
AllowRowsDragDrop
=
"true"
>
<
Selecting
EnableDragToSelectRows
=
"true"
AllowRowSelect
=
"true"
/>
<
ClientEvents
OnRowSelected
=
"onGridRowSelected"
OnCommand
=
"function(){}"
OnRowDblClick
=
"RemoveBold"
OnRowClick
=
"RemoveBold"
OnRowContextMenu
=
"GrdMessageRowContextMenu"
OnRowDropping
=
"onRowDropping"
/>
<
Scrolling
UseStaticHeaders
=
"true"
AllowScroll
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
GroupLoadMode
=
"Client"
DataKeyNames
=
"id"
Width
=
"100%"
AdditionalDataFieldNames
=
"Date"
ClientDataKeyNames
=
"id"
>
<
GroupByExpressions
>
<
telerik:GridGroupByExpression
>
<
GroupByFields
>
<
telerik:GridGroupByField
FieldName
=
"DateResult"
HeaderValueSeparator
=
":"
SortOrder
=
"Descending"
/>
</
GroupByFields
>
<
SelectFields
>
<
telerik:GridGroupByField
FieldName
=
"DateResult"
HeaderText
=
"Date"
FormatString
=
"{0:d}"
/>
</
SelectFields
>
</
telerik:GridGroupByExpression
>
</
GroupByExpressions
>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"TemplateColumn2"
GroupByExpression
=
"From Group By From"
SortExpression
=
"From"
HeaderText
=
"From / Subject"
HeaderStyle-Width
=
"150px"
>
<
ItemStyle
Height
=
"35px"
></
ItemStyle
>
<
ItemTemplate
>
<%# (Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "seen")) ? DataBinder.Eval(Container.DataItem, "from_msg").ToString() : "<
b
>" + DataBinder.Eval(Container.DataItem, "from_msg").ToString() + "</
b
>") %>
<
br
/>
<
div
class
=
"MailSubject"
>
<%# (Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "seen")) ? DataBinder.Eval(Container.DataItem, "subject").ToString() : "<
b
>" + DataBinder.Eval(Container.DataItem, "subject").ToString() + "</
b
>") %>
</
div
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"msg_date"
HeaderText
=
"Date"
HeaderStyle-Width
=
"150px"
GroupByExpression
=
"DateResult Date GROUP BY DateResult"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"size"
HeaderText
=
"Size"
HeaderStyle-Width
=
"50px"
>
</
telerik:GridBoundColumn
>
<
telerik:GridCalculatedColumn
UniqueName
=
"Date"
DataType
=
"System.DateTime"
DataFields
=
"msg_date"
Expression
=
"msg_date.Value.Date"
HeaderText
=
"Date"
Visible
=
"false"
>
</
telerik:GridCalculatedColumn
>
<
telerik:GridCalculatedColumn
UniqueName
=
"Conversation"
DataType
=
"System.String"
DataFields
=
"subject"
Expression
=
'subject.Replace("RE: ", "")'
HeaderText
=
"Conversation"
Visible
=
"false"
>
</
telerik:GridCalculatedColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"TemplateColumn3"
Groupable
=
"False"
>
<
HeaderStyle
Width
=
"25px"
></
HeaderStyle
>
<
ItemStyle
Height
=
"35px"
></
ItemStyle
>
<
ItemTemplate
>
<
asp:ImageButton
ID
=
"MailFlagImageButton"
BorderWidth
=
"0px"
CommandName
=
"ChangeFlag"
ImageUrl='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "flagged"))? "~/Images/MailFlagRed.png" : "~/Images/MailFlag.png" %>'
AlternateText="Change Flag" Style="cursor: pointer;" runat="server"></
asp:ImageButton
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
telerik:RadNotification
ID
=
"RadNotification1"
runat
=
"server"
LoadContentOn
=
"TimeInterval"
Width
=
"250"
Animation
=
"Fade"
EnableRoundedCorners
=
"true"
EnableShadow
=
"true"
Skin
=
"Default"
Height
=
"100"
OnClientUpdated
=
"OnClientUpdated"
Text="<strong>You have received 1 new message!</
strong
>" OffsetX="-30" OffsetY="-30" UpdateInterval="5000" AutoCloseDelay="10000"
ShowTitleMenu="true" ShowCloseButton="true" OnCallbackUpdate="OnCallbackUpdate">
<
NotificationMenu
>
<
Items
>
<
telerik:RadMenuItem
Text
=
"Open Item"
ImageUrl
=
"../../images/icons/open.png"
></
telerik:RadMenuItem
>
<
telerik:RadMenuItem
Text
=
"Flag Item"
ImageUrl
=
"../../images/icons/Flagged.png"
></
telerik:RadMenuItem
>
<
telerik:RadMenuItem
Text
=
"Delete Item"
ImageUrl
=
"../../images/icons/delete.gif"
></
telerik:RadMenuItem
>
<
telerik:RadMenuItem
Text
=
"Mark As Read"
ImageUrl
=
"../../images/icons/MarkAsRead.png"
></
telerik:RadMenuItem
>
</
Items
>
</
NotificationMenu
>
</
telerik:RadNotification
>
</
telerik:RadPane
>
Javascript:
var
data =
new
Array();
var
openedMsgs =
new
Array();
//use a flag to determine whether the item was selected by using the mouse or programmatically by the set_selected method
var
flag =
true
;
function
refreshGrid() {
var
grid = $find(
"<%=grdMessage.ClientID %>"
);
var
mtv = grid.get_masterTableView();
mtv.set_dataSource(data);
mtv.dataBind();
var
selectedItem = mtv.get_selectedItems()[0];
if
(selectedItem) {
selectedItem.set_selected(
false
);
}
var
items = mtv.get_dataItems();
for
(
var
i = 0; i < items.length; i++) {
items[i].get_element().style.fontWeight =
'bold'
;
}
if
(selectedItem) {
var
index = +selectedItem._itemIndexHierarchical;
flag =
false
;
if
(items[index + 1] !=
null
)
items[index + 1].set_selected(
true
);
}
for
(
var
i = 0; i < openedMsgs.length; i++) {
openedMsgs[i] = openedMsgs[i] + 1;
items[openedMsgs[i]].get_element().style.fontWeight =
'normal'
;
}
}
function
OnClientUpdated(sender, args) {
var
record = sender.get_value();
if
(record !=
""
) {
data.unshift(eval(record));
//refreshGrid();
sender.show();
}
sender.set_value(
""
);
}
function
RemoveBold(sender, args) {
var
item = args.get_item();
if
(!Array.contains(openedMsgs, (+item._itemIndexHierarchical)) && flag) {
openedMsgs.push(+item._itemIndexHierarchical);
item.get_element().style.fontWeight =
'normal'
;
}
flag =
true
;
}
function
OnRowCreated(sender, args) {
var
item = args.get_item();
item.get_element().style.fontWeight =
'bold'
;
}
Code:
protected
void
OnCallbackUpdate(
object
sender, RadNotificationEventArgs e)
{
CheckForNewMailsInHMailDB();
//simulates cases when there are and there are not new messages
if
(_NewMessages)
{
RadNotification1.Value = GetRecord();
grdMessage.Rebind();
_NewMessages =
false
;
}
else
RadNotification1.Value =
""
;
}
Please help
Thanks ahead
Amit Jain