2016-01-22 100 views
1

我正嘗試使用asp.net和C#和bootstrap創建網站內容管理。我已經使用asp.net和C#以及像gridview這樣的服務器控件完成了這個工作,但是我想創建一個像wordpress CMS一樣的版本。
我會描述我的項目來清除我的目的。
首先填寫數據庫中的DataTable。此Datatable具有messageId intSubject varcharname varcharemail varcharmessage textisRead bit,等等columns.isRead列是指定位類型,該消息被讀或沒有。 我用下面的方法填充我的數據表:在asp.net中使用C#從客戶端發送值到服務器端

DataTable dt = cls.Fill_In_DataTable("MessageFetchMessage");

然後我用另一種方法,動態生成HTML文本:在Page_Load中

protected void Page_Load(object sender, EventArgs e) 
{ 
    messeges = cls.fetchMessages(); 
} 

messege字符串變量,將追加生成html代碼爲aspx頁面:

<div class="row"> 
<div class="col-lg-12"> 
    <div class="panel panel-default"> 
     <div class="panel-heading"> 
      <h3 class="panel-title"><i class="fa fa-clock-o fa-fw"></i> Last messages From users</h3> 
     </div> 
     <div class="panel-body"> 
      <div class="list-group"> 
       <%=messeges %> 
      </div> 
      <div class="text-right"> 
       <a href="#">View All messages <i class="fa fa-arrow-circle-right"></i></a> 
      </div> 
     </div> 
    </div> 
</div> 

消息內容具有fetchMessages()方法,這些文字:

public string fetchMessages() 
{ 
    string post = ""; string readed = ""; 
    DataTable dt = cls.Fill_In_DataTable("MessageFetchMessage"); 
    if (dt.Rows.Count>0) 
    { 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      DateTime dtTemp = DateTime.Parse(dt.Rows[i]["messageDate"].ToString()); 

      if (dt.Rows[i]["isRead"].ToString() == "True") 
       readed = "MessageReaded"; 
      else 
       readed = "MessageNew"; 
      post += "<div class='modal fade' id='myModal" + dt.Rows[i]["messageId"].ToString() + "' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>" 
       + "<div class='modal-dialog' role='document'>" 
       + "<div class='modal-content'>" 
       + "<div class='modal-header'><button type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>&times;</span></button><h4 class='modal-title' id='myModalLabel'><span style='font-weight:bold'>Subject</span> : " + dt.Rows[i]["subject"].ToString() + "</h4></div>" 
       + "<div class='modal-header'><p><span style='font-weight:bold'>Date</span> : " + dtTemp.ToString("yyyy/MM/dd") + "</p>" 
       + "<p><span style='font-weight:bold'>Time</span> : " + dt.Rows[i]["messageTime"].ToString() + "</p>" 
       + "<p><span style='font-weight:bold'>Email</span> : " + dt.Rows[i]["email"].ToString() + "</p></div>" 
       + "<div class='modal-body'>" + dt.Rows[i]["message"].ToString() + "</div>" 
       + "<div class='modal-footer'><button type='button' class='btn btn-default' data-dismiss='modal'>Close</button><input type='submit' ID='btn" + dt.Rows[i]["messageId"].ToString() + "' class='btn btn-danger' onserverclick='btn_Click' value='Delete message' /></div>"  
       + "</div></div></div>"; 
      string narrow = Special.TimeToNarrow(dt.Rows[i]["messageDate"].ToString(), dt.Rows[i]["messageTime"].ToString()); 
      post += "<a data-toggle='modal' data-target='#myModal" + dt.Rows[i]["messageId"].ToString() + "' href='#' class='list-group-item " + readed + "'><span class='badge'>" + narrow + "</span><i class='fa fa-fw fa-comment'></i> <span>" 
       + dt.Rows[i]["name"].ToString() + "</span> : <span>" + dt.Rows[i]["subject"].ToString() + "</span></a>"; 
     } 
    } 

    return post; 
} 

最後我想補充服務器代碼背後btn_Click事件:

protected void btn_Click(object sender, EventArgs e) 
{ 
    string id = (sender as Control).ClientID; 
    //Then give Id to database class for CRUD Intractions 
} 

但btn_Click從來沒有從客戶端叫。我在2天內搜索了類似的問題,但沒有得到答案。請幫我:)
這裏我將把我的網站截屏:

enter image description here 然後單擊行的一個彈出窗口會顯示使用模式引導後:
enter image description here

+0

您需要WebMethod。你知道如何使用這些嗎? – snowYetis

+0

不,我不是:(對不起,你能解釋一下嗎? –

+0

亞沒問題,我會發表一個答案。 – snowYetis

回答

1

加入您的模式,按鈕和任何其他標記你必須在ASPX頁面(標記)。然後,您可以在點擊事件中獲得您的ID。代碼的動態生成不會在Webforms中向服務器端註冊控件。

捕獲到消息ID後,可以將其置於ViewState,Session或UI上的隱藏字段中。這樣,您可以在需要時使用該ID。

+0

非常感謝'snowyetis'你很好地幫助我在這裏和聊天 –

+0

@BlueMoon隨時,很高興我可以幫助。 – snowYetis

相關問題