close

控制 ListView的刪除,編輯,更新以及插入(搭配SqlDataSource小精靈)

重點1:

  把刪除編輯以及更新按鈕放於ListView樣板之"外"!

重點2:

  按鈕不設定CommandName!

重點3:

  一定要先選取某一筆資料後,才可以對它做刪除編輯更新等動作!

 

Step 1:

  首先先拉入ListView然後和SqlDataSource小精靈連接DB

 

Step2:

  前一篇有提到,微軟沒有給ListView選取這項技能,所以自己加但千萬記得(Itemplate and AlternatingItemTemplate都要),

  不然會呈現一列有一列沒有的怪異現象!

  前端程式碼如下:

  <AlternatingItemTemplate>

     <asp:Button ID="Button2" runat="server" Text="選取(Select)" CommandName="Select"  />

  </AlternatingItemTemplate>

  <ItemTemplate>

     <asp:Button ID="Button2" runat="server" Text="選取(Select)" CommandName="Select"  />

  </ItemTemplate>

上一篇有提到這是SqlDataSource的內建事件,選取後會自動變色

 

Step3:

  然後我們在ListView樣板外,自己加入4個Buttons

  button  

  ID分別為:Button1_Delete Button2_Edit Button3_Update Button4_Insert。

 

Step4:

後置程式碼:

(1) 刪除的按鈕,按下後觸發之事件:  

protected void Button1_Delete_Click(object sender, EventArgs e){

if (ListView1.SelectedIndex >= 0)
{
  ListView1.DeleteItem(ListView1.SelectedIndex);//透過DeleteItem方式,選取到要刪除的資料索引
  Label1.Text = "刪除成功!";
}
else
{
  Label1.Text = "沒有選取資料";
}

 

之後因為有搭配SqlDataSource,我們可以利用它來檢查有無例外狀況:

 

protected void ListView1_ItemDeleted(object sender, ListViewDeletedEventArgs e)
{
  if (e.Exception != null)
  {
    Label1.Text = "例外狀況";
  }
  else
  {
    ListView1.SelectedIndex = -1; //未選定任何一筆資料
  }
}

 

(2) 編輯按鈕按下觸發事件:

 

protected void Button2_EDIT_Click(object sender, EventArgs e)
{
if (ListView1.SelectedIndex >= 0)
{
  ListView1.EditIndex = ListView1.SelectedIndex; 
  Button1_DELETE.Visible = false; //進入編輯把刪除隱藏
  Button3_UPDATE.Visible = true;
}
else
{
  Label1.Text = "尚未選取";
}
}

(3) 更新按鈕按下觸發事件:

 

protected void Button3_UPDATE_Click(object sender, EventArgs e)
{
if (ListView1.SelectedIndex >= 0)
{
  ListView1.UpdateItem(ListView1.SelectedIndex, false); //選取更新索引否則為false
}
else
{
  Label1.Text = "尚未選取";
}
Button1_DELETE.Visible = true;
}

(4) 新增按鈕按下觸發事件:

protected void Button4_INSERT_Click(object sender, EventArgs e)
{
  ListView1.InsertNewItem(true); //取得新資料來源
  Button1_DELETE.Visible = false;
}

完畢感謝大家!

 

 

arrow
arrow
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

    melomelo1988 發表在 痞客邦 留言(0) 人氣()