asp.net 訊息框

來源:互聯網
上載者:User
asp.net

DataGrid的功能我想大家是知道的,我在實際的應用中遇到如下的問題,客戶要求在刪除之前做一次提示。類 似於windows。首先我們都知道DataGrid支援刪除的功能,我們可以向DataGrid裡面添加刪除列就可以實現.

 

給DataGrid添加確定刪除的功能
DataGrid的功能我想大家是知道的,我在實際的應用中遇到如下的問題,客戶要求在刪除之前做一次提示。類

似於windows。首先我們都知道DataGrid支援刪除的功能,我們可以向DataGrid裡面添加刪除列就可以實現,

下面我想用模板列來實現帶提示的刪除按鈕。我們用northwind的樣本資料庫作為例子資料庫操縱Categories表。

DataGrid的Html頁的內容如下:
<asp:DataGrid id="grdTest" style="Z-INDEX: 101; LEFT: 205px; POSITION: absolute; TOP: 134px"

runat="server">
    <Columns>
     <asp:TemplateColumn>
      <ItemTemplate>
       <asp:Button id="btnDelete"

runat="server" Text="Button" CommandName="Delete"></asp:Button>
      </ItemTemplate>
     </asp:TemplateColumn>
    </Columns>
   </asp:DataGrid>
我們只添加了一個模板列,其他的列都是在啟動並執行時候自動產生的。
可以看出這個模板列很像刪除列但是又不是刪除列,我們給一個普通的Button添加了一個CommandName

="Delete"的屬性。這是用來響應DataGrid的ItemCommand事件的!在刪除列裡面就是這樣的!

接下來就是後台代碼了,代碼如下所示:
private DataSet ds = new DataSet();
private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此處放置使用者代碼以初始化頁面
   if(!this.IsPostBack){
    string strConnection = ConfigurationSettings.AppSettings

["sa"].ToString();
    SqlConnection myConnection = new SqlConnection(strConnection);
    SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT

CategoryID,CategoryName, Description FROM Categories",myConnection);
    myAdapter.Fill(ds);
    this.grdTest.DataSource = ds.Tables[0].DefaultView;
    this.grdTest.DataKeyField = "CategoryID";
    this.grdTest.DataBind();
   }
  }

接下來我們給模板列裡面的每一個按鈕都添加一個用戶端的onclick事件。我想大家都應改知道Attributes屬

性吧!可以通過他向用戶端輸出用戶端控制項的屬性比如:長度、顏色等等。但是通常情況我們使用它添加客戶

端事件。知道javascript的朋友肯定知道confirm了!它會彈出一個確認對話方塊如果確定才提交form否則就不

提交,所以使用這個也是很自然的了。
private void grdTest_ItemDataBound(object sender,

System.Web.UI.WebControls.DataGridItemEventArgs e) {
   switch(e.Item.ItemType){
    case ListItemType.Item:
    case ListItemType.AlternatingItem:
    case ListItemType.EditItem:{
     Button btn = (Button)e.Item.FindControl("btnDelete");
     btn.Attributes.Add("onclick", "return confirm('你是否

確定刪除這條記錄');");
     break;
    }
   }
  }
添加好這個事件裡以後我們還需要添加如下的代碼才能完成我們的工作:
private void grdTest_ItemCommand(object source,

System.Web.UI.WebControls.DataGridCommandEventArgs e) {
   if(e.CommandName == "Delete"){
    this.DeleteRow(this.grdTest.DataKeys[e.Item.ItemIndex].ToString

());
   }
  }
上面的事件就是我們點擊DataGrid裡面的控制項的時候激發的事件,我們可以通過CommandName篩選出來我們想

要激發的方法DeleteRow(),一下就是這個方法的代碼:
private void DeleteRow(string i){
   string strConnection = ConfigurationSettings.AppSettings["sa"].ToString

();
   SqlConnection myConnection = new SqlConnection(strConnection);
   SqlCommand cmd = new SqlCommand("DELETE FROM Categories WHERE

(CategoryID = "+i+")",myConnection);
   myConnection.Open();
   cmd.ExecuteNonQuery();
   myConnection.Close();
  }
上面的函數接收一個參數,此參數是當前選中行的關鍵字。
有錯誤的地方請多多指教。e_mail:wu_jian830@hotmail.com


 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。