2011-07-24 42 views
1

我正在向我的網站添加一個stackoverflow-esq類型的通知欄。 在服務器端我加入的div用於顯示:asp.net - 用戶通知實現

for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      string script = "<div class='hover-notification' style='display:none;'>"; 
      script += dt.Rows[i]["messageText"].ToString(); 
      if ((bool)dt.Rows[i]["canDismiss"] == false) 
       script += "<span class='dismiss'><a title='Dismiss notification'>x</a></span>"; 
      script += "</div>"; 
      ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript" + i, script); 

     } 

客戶端側的代碼是:

$(document).ready(function() { 
     $('.hover-notification').prependTo('body').slideDown('slow'); 
     $('.dismiss').click(function() { $(this).parent().slideUp('slow').remove(); }); 
    }); 

我具有保存所有所有用戶的消息,並且具有MESSAGEID主表鍵。在某些事件中將消息添加到表中,並且在其他事件中刪除不可解僱的消息。 我想要做的就是一旦用戶點擊解僱按鈕,將消息標記爲解除。

我不知道如何做到這一點。 有人能請我指出正確的方向嗎?

p.s.我也對目前爲止的服務器端/客戶端代碼發表任何評論。

+0

你能提供一個jsfiddle.net的具體例子嗎? – ChristopheCVB

+0

@ChristopheCVB - 你在這裏:http://jsfiddle.net/7QS7D/ –

+0

現在工作嗎? – ChristopheCVB

回答

1

如果我瞭解你的需求,你想批准在服務器端的解僱。

嘗試:

$('.dismiss').click(function() { 
    $(this).parent().slideUp('slow').remove(); 
    // ajax request to server 
    $.get('dismiss.asp?id='+this.id); 
}); 

你所要做的是創建這個dismiss.asp收到關於新推的ID:

<a id='123' class='dismiss'>x</a> 

難道我回答你的問題?

+0

感謝您的回覆。那麼你會在哪裏存儲這個ID? –

+0

在一個標籤或父母,但你必須改變js this.parentNode.id – ChristopheCVB

+0

任何機會,你可以用一個例子更新jsfiddle?謝謝。 –

1

添加WCF REST的服務到項目,並定義一個經營合同,看起來像這樣:

(僞)

[OperationContract] 
[WebGet(UriTemplate = "MyService/DismissMessage({x})")] 
public bool DismissMessage(int id) { 
    var success = MyLibrary.DismissMessage(id); 
    return success; 
} 

在jQuery中,只需撥打您的WCF服務如下:

$.getJSON('MyService/DismissMessage('+messageId+')', function(data) { 
    // do something on success or fail 
} 

如要進一步瞭解,我建議你檢查這篇文章:http://www.codeproject.com/KB/ajax/jQueryWCFRest.aspx