- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我面临着一个严重的问题。我想在 HTML 表中显示所有用户及其状态。可以使用 javascript 吗?
我浏览了下面的链接,它只显示了一个用户,它的状态和用户邮件 ID 是硬编码的。
Integrate Microsoft Office Communicator 2007 in ASP.NET Page
Javascript
<script type="Javascript">
var sipUri = "your.contact@your.domain.com";
var nameCtrl = new ActiveXObject('Name.NameCtrl.1');
if (nameCtrl.PresenceEnabled)
{
nameCtrl.OnStatusChange = onStatusChange;
nameCtrl.GetStatus(sipUri, "1");
}
function onStatusChange(name, status, id)
{
// This function is fired when the contacts presence status changes.
// In a real world solution, you would want to update an image to reflect the users presence
alert(name + ", " + status + ", " + id);
}
function ShowOOUI()
{
nameCtrl.ShowOOUI(sipUri, 0, 15, 15);
}
function HideOOUI()
{
nameCtrl.HideOOUI();
}
</script>
HTML
<span onmouseover="ShowOOUI()" onmouseout="HideOOUI()" style="border-style:solid">Your Contact</span>
<table id="tblContacts" runat="server">
<tr>
<td> email id </td>
<td> status </td>
</tr>
<tr>
<td> --- </td>
<td> --- </td>
</tr>
<tr>
<td> --- </td>
<td> --- </td>
</tr>
<tr>
<td> --- </td>
<td> --- </td>
</tr>
</table>
在此示例中,它显示的是单个用户,用户邮件 ID 定义为字符串(硬编码)。我想向所有用户展示。是否可以通过 javascript 实现?
任何解决方案/演示都会对我有很大帮助。
谢谢。
最佳答案
经过长时间的尝试,我能够根据需要实现功能。我在这里解释要遵循的步骤。
我使用“Communicator API”和“NameCtrl”来实现这一点
1) 请参阅此链接 http://msdn.microsoft.com/en-us/library/bb787231%28v=office.12%29.aspx
为什么我要提到这个,因为要使用 Microsoft Office Communicator Automation API 开发应用程序,必须满足以下要求:
Microsoft Office Communicator 2007 is installed on your development machine.
Microsoft Office Communicator 2007 SDK is installed on the development machine. The SDK is available for download from MSDN.
2) 在服务器上安装Lync2010并登录。
3) 从您的 Web 应用程序添加对 CommunicatorAPI.dll 和 CommunicatorPrivate.dll 的引用
我在这里使用的是从“http://www.microsoft.com/en-us/download/details.aspx?id=10503”下载的通信器图像。这是一个 msi 文件。下载并执行。在演示中,您可以复制这些图像并添加到您的应用程序中
这是完整的解决方案。
HTML
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MARSWebCommunicator._Default" %>
<asp:Content runat="server" ID="FeaturedContent" ContentPlaceHolderID="FeaturedContent">
<section class="featured">
<div class="content-wrapper">
</div>
</section>
<script src="Scripts/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
var sipUri = "chandan.kumarpanda@yourdomain.com";
var nameCtrl = new ActiveXObject('Name.NameCtrl.1');
$(document).ready(function () {
sipUri = $("#<%=HiddenField1.ClientID %>").val();
if (sipUri != "") {
if (nameCtrl.PresenceEnabled) {
nameCtrl.OnStatusChange = onStatusChange;
nameCtrl.GetStatus(sipUri, "1");
}
}
});
function onStatusChange(name, status, id) {
// This function is fired when the contacts presence status changes.
// In a real world solution, you would want to update an image to reflect the users presence
//alert(name + ", " + status + ", " + id);
}
function ShowOOUI() {
nameCtrl.ShowOOUI(sipUri, 0, 15, 15);
}
function HideOOUI() {
nameCtrl.HideOOUI();
}
</script>
</asp:Content>
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<div>
<asp:HiddenField ID="HiddenField1" runat="server" />
</div>
<div id="dvContactdetails">
<table border="1">
<tr>
<td>Email Id</td>
<td>Name</td>
<td>Status</td>
</tr>
<tr>
<td>
<asp:DropDownList ID="drpEmails" AutoPostBack="true" runat="server" OnSelectedIndexChanged="drpEmails_SelectedIndexChanged"></asp:DropDownList></td>
<td>
<asp:Image ID="Image1" onmouseover="ShowOOUI()" onmouseout="HideOOUI()" ImageUrl="presence_images/presence_16-unknown.bmp" runat="server" />
<asp:Label ID="lblName" runat="server" Text="Contact Name"></asp:Label>
</td>
<td>
<asp:Label ID="lblStatus" runat="server" Text="Contact Status"></asp:Label></td>
</tr>
</table>
</div>
</asp:Content>
代码隐藏
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CommunicatorAPI;
namespace MARSWebCommunicator
{
public partial class _Default : Page
{
CommunicatorAPI.Messenger communicator = null;
List<CustomContacts> lstContactDetails;
protected void Page_Load(object sender, EventArgs e)
{
lstContactDetails = new List<CustomContacts>();
communicator = new CommunicatorAPI.Messenger();
string mymailid = "Chandan.kumarpanda@yourdomain.com";
var contact = GetContact(mymailid);
int s = (int) contact.Status;
lblStatus.Text = GetStatus(s);
if (!Page.IsPostBack)
{
drpEmails.Items.Add(mymailid);
lblName.Text = contact.SigninName.ToString();
HiddenField1.Value = contact.SigninName.ToString();
lstContactDetails = GetAllEmailsWithFiendlyName();
foreach (CustomContacts aContact in lstContactDetails)
{
drpEmails.Items.Add(aContact.ContactEmailId);
}
}
}
protected void drpEmails_SelectedIndexChanged(object sender, EventArgs e)
{
string currentmailid = drpEmails.SelectedItem.Text;
var contact = GetContact(currentmailid);
lblName.Text = contact.FriendlyName.ToString();
int s = (int)contact.Status;
lblStatus.Text = GetStatus(s);
if (HiddenField1.Value != "")
{
HiddenField1.Value = "";
HiddenField1.Value = contact.SigninName.ToString();
}
}
protected string GetStatus(int s)
{
string status = string.Empty;
string src = string.Empty;
int tempstatusno = s;
switch (s)
{
case 0 :
status = "UNKNOWN";
src = "presence_images/presence_16-unknown.bmp";
break;
case 1:
status = "OFFLINE";
src = "presence_images/presence_16-off.bmp";
break;
case 2:
status = "ONLINE";
src = "presence_images/presence_16-online.bmp";
break;
case 6:
status = "INVISIBLE";
src = "presence_images/presence_16-unknown.bmp";
break;
case 10:
status = "BUSY";
src = "presence_images/presence_16-busy.bmp";
break;
case 14:
status = "BE_RIGHT_BACK";
src = "presence_images/presence_16-idle-busy.bmp";
break;
case 18:
status = "IDLE";
src = "presence_images/presence_16-idle-online.bmp";
break;
case 34:
status = "AWAY";
src = "presence_images/presence_16-away.bmp";
break;
case 50:
status = "ON_THE_PHONE";
break;
case 66:
status = "OUT_TO_LUNCH";
break;
case 82:
status = "IN_A_MEETING";
break;
case 98:
status = "OUT_OF_OFFICE";
break;
case 114:
status = "DO_NOT_DISTURB";
src = "presence_images/presence_16-dnd.bmp";
break;
case 130:
status = "IN_A_CONFERENCE";
break;
case 146:
status = "ALLOW_URGENT_INTERRUPTIONS";
break;
case 162:
status = "MAY_BE_AVAILABLE";
break;
case 178:
status = "CUSTOM";
break;
default:
status = "OFFLINE";
src = "presence_images/presence_16-unknown.bmp";
Image1.ImageUrl = src;
break;
}
Image1.ImageUrl = src;
return status;
}
public IMessengerContact GetContact(string signinName)
{
return communicator.GetContact(signinName, communicator.MyServiceId) as IMessengerContact;
}
public List<CustomContacts> GetAllEmailsWithFiendlyName()
{
List<CustomContacts> lstContacts = new List<CustomContacts>();
IMessengerContacts messengerContacts = (IMessengerContacts)communicator.MyContacts;
foreach (IMessengerContact acontact in messengerContacts)
{
CustomContacts aContact = new CustomContacts();
aContact.ContactName = acontact.FriendlyName.ToString();
aContact.ContactEmailId = acontact.SigninName.ToString();
lstContacts.Add(aContact);
}
return lstContacts;
}
}
public class CustomContacts
{
public string ContactEmailId { get; set; }
public string ContactName { get; set; }
public string ContactStatus { get; set; }
}
}
关于c# - 如何让所有用户从 Office Communicator 转到 asp.net 网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20754448/
我对 Office Scripts 和 Office Lab 感到困惑。 两者都可以在 Excel 中运行 javascript,但似乎无法在它们中共享代码。 对于 Office 脚本,一些代码如 f
如果我们加载一个引用 office.js 的网页在 Office 客户端之外,我们会收到警告:Office.js is loaded outside of Office client . 这些信息很有
我试图找到一种将 Outlook 插件发布到办公商店的方法。但我发现我们只能发布 Office 应用程序,而不能发布 Office 商店的加载项。因此我想知道 Office 应用程序和 Office
我想使用 Ooxml 以编程方式自定义“Heading1”和“Heading2”样式通过 office.js Visual Studio 代码中的库。我已经搜索过谷歌和许多文档,但仍然没有得到任何内容
我想使用 Microsoft.Office.Interop.Excel 从 XLS 文件中提取一些数据。我安装了 Visual Studio 2010 和 Office 开发人员工具。但是,我在 va
最近,Microsoft 推出了 Office 插件架构,该架构允许开发远程托管并在 Office 内的 IFrame 中运行的插件。我读了很多文章,试图了解这个架构是否是 VSTO 的替代品,或者它
我开发了一个将数据导入 Microsoft Excel 的应用程序。 我使用 VS2005 + .NET 2.0,并且我的计算机上安装了 Microsoft Office 2007 (Office 1
是否有推荐的方法(包、框架等)来设置 Office 加载项的自动化端到端测试。我对测试的所有搜索都导致侧加载应用程序和手动测试。 例如:https://dev.office.com/docs/add-
我们正在为 Excel 和 Word 开发 javascript Office 插件。我们的用户将使用 Office Desktop 和 Office Online。 当用户在加载项中创建新记录时,我
我在电子表格上有一个表格,我想删除所有现有数据。我使用下面的代码,除非表格已经是空的。 // Get the row count let rowCount = table.getRangeBetwee
所以我正在尝试开始开发 Office 365 加载项(以前的 Office 应用程序),我想知道 Office 在呈现您的应用程序时使用什么浏览器或浏览器引擎。我尝试使用 JavaScript 的 n
我正在寻找一些关于在 网上商店 上托管我们当前托管应用程序的更新版本的信息。 我的查询是,我们现有版本的应用程序说的 list 文件 版本。 1.0 托管在网上商店指向源位置(天蓝色 网站)说 mya
在我们的组织中,我们构建了一个 Office 加载项。现在我们想在我们的加载项中添加打印功能。谁能帮助我如何使用 Office javascript API 添加打印功能。 最佳答案 Office.J
我有兴趣了解有关 Microsoft Office Communicator 的更多信息IM 客户端,以及它如何确定您的存在(即您是在计算机旁还是不在)。任何人都可以向我指出解释这一点的教程或 API
问题: 我有两个电子表格,每个电子表格都有不同的用途,但包含一个特定的数据,这两个电子表格中的数据需要相同。这条数据(其中一列)在电子表格 A 中更新,但也需要在电子表格 B 中更新。 目标: 以某种
可在此处获得office.js的正式版本: https://appsforoffice.microsoft.com/lib/1/hosted/office.js 它在代码中包含以下几行: window
不久前我有了一个发现。只需按照以下步骤操作: 在 Office 2003 中创建一个 .doc/.xls/.ppt 文件。在其中保留一些测试数据并关闭该文件。现在重命名该文件以将其文件扩展名更改为随机
姓名:来自:file:///D:/Samples/TestUpdatedVersion/bin/Debug/TestUpdatedVersion.vsto 无法安装自定义,因为当前已安装另一个版本并且
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我对使用 Office 2007 在 2007 之前的二进制格式(.doc、.xls、.ppt)和新的 Office Open XML 格式(.docx、.xlsx、.pptx)之间进行转换很感兴趣
我是一名优秀的程序员,十分优秀!