ページが読み込まれるたびに表示されるビジュアルWebパーツのjQuery/javascriptにモーダルダイアログポップアップを作成しました。ポップアップには送信ボタンがあり、クリックすると、ユーザー名と承認された日付がカスタムリストに保存されます。動作するjQコード:
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
ExecuteOrDelayUntilScriptLoaded(openDialog, "SP.js");
});
//open dialog
// Call openDialog method on button click or on page load
function openDialog() {
//alert("In funciton opendialog");
var options = {
//html: divModalDialogContent, // ID of the HTML tag
// or HTML content to be displayed in modal dialog
width: 400,
url: "/_layouts/ModalDialog1/ModalDialog.aspx",
height: 125,
title: "Acknowedgement Popup",
dialogReturnValueCallback: dialogCallbackMethod, // custom callback function
allowMaximize: false,
showClose: false
};
SP.UI.ModalDialog.showModalDialog(options);
}
// Custom callback function after the dialog is closed
function dialogCallbackMethod(result, returnValue) {
alert("dialogResult" + result + "nreturnValue" + returnValue);
if(result == SP.UI.DialogResult.OK)
{
alert("You chose the OK button");
//document.title = returnValue;
}
if(result == SP.UI.DialogResult.cancel)
SP.UI.Notify.addNotification("You chose the Cancel button");
}
}
</script>
今、私はこのコードでリストにユーザー名を追加しています。ポップアップでボタンがクリックされたときにトリガーされるaspxページを使用して、リストに保存しています。
protected void Button1_Click(object sender, EventArgs e)
{
Context.Response.Write(@"<script type='text/javascript'>
alert('Thanks for acknowledging!');
window.frameElement.commitPopup();
</script>");
Context.Response.Flush();
Context.Response.End();
string username;
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
site.AllowUnsafeUpdates = true;
using (SPWeb web = site.RootWeb)
{
web.AllowUnsafeUpdates = true;
SPUser user = web.CurrentUser;
username = user.LoginName.ToString();
//adding list item
SPList l = web.Lists["Acknowledgements"];
SPListItem li = l.Items.Add();
li["User"] = username;
li["Acknowedgement Date"] = System.DateTime.Today;
li.Update();
}
}
ここで、クライアントの要件は、月の初めにモーダルダイアログポップアップを表示し、ユーザー名がカスタムリストにすでに存在する場合はその月のモーダルダイアログポップアップを表示しないことです。私はグーグルで検索し、コードビハインドでJavaScriptを記述して使用できるregisterstartupscriptについて知りましたが、機能していません。私はリストからのユーザー名と現在ログインしているユーザー名を比較することを計画しており、彼がすでに承認している場合はポップアップを表示しませんが、さらに、JavaScriptがクライアント側にある場合にそれを達成する方法に勝ります。
string Script = @"function openDialog() { var options={
width:400,
url: '/_layouts/ModalDialog/ModalDialog.aspx', height:125,
title: 'Acknowedgement Popup',
dialogReturnValueCallback: dialogCallbackMethod,
allowMaximize: false,
showClose: false
};
SP.UI.ModalDialog.showModalDialog(options);
}";Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "openDialog", Script, true);
私はこれで正しい方向に進んでいますか?私はSharePointを初めて使用するので、助けてください。これは私を窮地に追いやる。よろしくお願いします。