2012-09-13 61 views
0

我有一個程序,人們可以在視頻上發表評論。評論來自隊列狀態。管理員可以進入管理員部分並將評論標記爲已批准或已刪除。當他們按下上一個或下一個按鈕時,他們希望能夠自動轉到在隊列中標記的下一個項目,以及是否批准或刪除評論。我不太瞭解jQuery或JavaScript,以便知道是否可以使用它們,或者如何通過後面的代碼(這是使用C#.NET)來完成它。任何幫助將不勝感激:如何獲得「上一個」和「下一個」功能?

Status and value: 
In queue = 0 
Approved = 1 
Removed = 2 

這是代碼隱藏。狀態改變了,我唯一不能做的就是去隊列中標記的下一條記錄。前兩個事件是空白的,因爲我不知道如何填充它們,但簡單地說,所有需要做的事情就是去隊列中標記的下一個記錄。

如果您需要更多的代碼,請讓我知道...

protected void previous_clicked(object sender, EventArgs e) 
    { 
    } 

    protected void next_clicked(object sender, EventArgs e) 
    { 
    } 

    protected void approve_clicked(object sender, EventArgs e) 
    { 
     currentMessage = new videomessage(Request["id"].ToString()); 

     status.SelectedValue = "1"; 

     currentMessage.status = "1"; 
     currentMessage.Save(); 
    } 

    protected void remove_clicked(object sender, EventArgs e) 
    { 
     currentMessage = new videomessage(Request["id"].ToString()); 

     status.SelectedValue = "2"; 

     currentMessage.status = "2"; 
     currentMessage.Save(); 
    } 
+0

你可以建立名單:

// I made this method up because I do not know where your messages really come from. // => ADJUST TO YOUR NEEDS. private void onNewMessageArriving(string messageId) { videomessage arrivingMessage = new videomessage(messageId); _messagesToApprove.Add(arrivingMessage); } 

的,你可以很容易地通過遞增/遞減位置索引實現導航:每當有消息到達,調用等的方法將其添加到收藏作爲linkedList的評論,做下一個和上一個? –

+0

你可能需要分享一些更多的細節才能得到這個答案。你的消息現在存儲在什麼/哪裏? 'new videomessage(Request [「id」]。ToString())'是做什麼的?是status.SelectedValue一個GUI元素? – Sogger

+0

我和Sogger一起,你需要提供更多的細節。發佈您的頁面標記和您用來填充評論列表的代碼。 – Icarus

回答

2

聽起來更像是對我的建築挑戰。我想推薦使用Queue。這是一種遵循first-in, first-out(FIFO)方法的集合類型。您將對象放入隊列中,然後按照的順序將它們退回。從隊列中接收到的對象會自動從隊列中移除,因此您可以確定不會處理相同的元素兩次。然後

你描述的工作流程會工作,因爲這些簡單的步驟:

  1. 每當有消息到達時,你把對象into your queue
  2. 當管理員點擊next button時,請求第一個對象out of the queue
  3. 您的管理員執行其管理任務並批准該消息。
  4. 點擊Next再次從上述第1項開始。

[編輯]

哎呀,我意識到,我的Queue方法不會允許導航回到以前的項目。

在這種情況下,我建議使用簡單的List集合。該列表可以通過列表中基於0的位置訪問。這使得實現向前/向後導航變得容易。

對於我的示例代碼,請記住,有很多我不知道你的環境,所以我的代碼在這裏做了很多假設。

你需要somwhere存儲包含您的消息的集合被批准:

private IList<videomessage> _messagesToApprove = new List<videomessage>(); 

您還需要一些變量,跟蹤當前的位置在您的收藏:

// Store the index of the current message 
// Initial value depends on your environment. :-) 
private int _currentIndex = 0; 

首先,您需要一個將新消息添加到該集合的起點,例如訂閱某些事件。

private void previous_Click(object sender, EventArgs e) 
{ 
    // Check that we do not go back further than the beginning of the list 
    if ((_currentIndex - 1) >= 0) 
    { 
    _currentIndex--; 
    this.currentMessage = this._messagesToApprove[_currentIndex]; 
    } 
    else 
    { 
    // Do nothing if the position would be invalid 
    return; 
    } 
} 

private void next_Click(object sender, EventArgs e) 
{ 
    // Check if we have new messages to approve in our list. 
    if ((_currentIndex + 1) < _messagesToApprove.Count) 
    { 
    _currentIndex++; 
    currentMessage = _messagesToApprove[_currentIndex]; 
    } 
    else 
    { 
    // Do nothing if the position would be invalid 
    return; 
    } 
} 

private void approve_Click(object sender, EventArgs e) 
{ 
    // Sorry, I don't know where exactly this comes from, needs to be adjusted to your environment 
    status.SelectedValue = "1"; 

    this.currentMessage.status = "1"; 
    this.currentMessage.Save(); 

    // If you want to remove items that have been checked by the admin, delete it from the approval list. 
    // Otherwise remove this line :-) 
    this._messagesToApprove.RemoveAt(_currentIndex); 
} 

private void remove_Click(object sender, EventArgs e) 
{ 
    // Sorry, I don't know where exactly this comes from, needs to be adjusted to your environment 
    status.SelectedValue = "2"; 

    this.currentMessage.status = "2"; 
    this.currentMessage.Save(); 

    // If you want to remove items that have been checked by the admin, delete it from the approval list. 
    // Otherwise remove this line :-) 
    this._messagesToApprove.RemoveAt(_currentIndex); 
} 
+0

這將如何完成?我不熟悉這種技術。 – Peter

+0

@彼得:這不是一種技術。 'Queue'只是一個.NET類。 Jus看看MSDN文檔。使用它非常簡單。但是我同時意識到使用'List'集合可能更適合您的情況。請參閱我添加的代碼片段以獲取示例解決方案。 –

0

保存在會話視圖狀態或當前註釋的id拿回來上一個或下一個按鈕,點擊顯示相應:

Session["id"] = 2; 
int id = (int) Session["id"]; 
相關問題