控制 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
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;
}
完畢感謝大家!
留言列表