close

大家好,這是我第一篇文章如果寫得不好很抱歉,因為其實這是寫給我自己看的筆記重點

(如果有幫到你那我也很開心),若有ASP.NET WebForm開發同好,歡迎大家可以一起討論共同成長。

謝謝大家囉!

 

主題:ListView

ListView:ListView和其他樣板最大差異在於,都是以user的template來呈現資料。

重點一:

在連結ListView 和 Datasource小精靈的時候,ListView會自動在幫最後一行加入"新增資料的樣板",

如果不想要可以將其屬性(InsertItemPosition)設置為:None。

 

重點二:(ListView中的 ItemTemplate 與 AlternatingItemTemplate 樣板之間的差異)

雖說ListView的樣板共有11個,但是個人認為最特殊的就是這兩個樣板了。 原因如下:

如果你只修改ItemTemplate那麼你只會修改到奇數列的顯示資料。

相反的如果你只修改AlternatingItemTemplate那麼你只會修改到偶數列的顯示資料

給大家看個範例:

<ItemTemplate>
 <span style="background-color: #DCDCDC;color: #000000;">id:
 <asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
 <br />
 test_time:
 <asp:Label ID="test_timeLabel" runat="server" Text='<%# Eval("test_time","{0:yyyy/MM/dd}") %>' />
<ItemTemplate>

上面我想顯示資料庫中的test_time,但是我想顯示成短日期(2014/10/26),但原本資料庫中的資料是(2014/10/26 上午12:00)怎改?

答案是修改ItemTemplate 與 AlternatingItemTemplate因為這兩個樣板就是用來顯示ListView的奇數與偶數欄位的資料。

如果今天只修改了ItemTemplate:

ListViewTestime  

那你就只會改到奇數欄位而已喔!

 

重點三:(ListView中的選取按鈕)

微軟並沒有替ListView加入選取按鈕,但我們怎可能不選取資料!?

所以我們可以自己加! 後置程式碼如下:(記得 ItemTemplate 與 AlternatingItemTemplate都要加喔! )

<ItemTemplate>
<span style="background-color: #DCDCDC;color: #000000;">id:
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
<br />
test_time:
<asp:Label ID="test_timeLabel" runat="server" Text='<%# Eval("test_time","{0:yyyy/MM/dd}") %>' />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" />
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" />
<asp:Button ID="Button1" runat="server" Text="選取" CommandName="Select" />
<br /><br /></span>
</ItemTemplate>

然後我們可以看到上面紅色程式碼我加入了 CommandName,也就是代表說只要你點了這個按鈕,就會觸發ListView的SelectItemTemplate樣板(內建的),

也就是說會自動變色!(因為ListView的SelectItemTemplate樣板,會自動幫你把選到的那列變色) 畫面如下:

選取變色  

重點四:(自行加入按鈕於ListView樣板中,並且自行處理觸發事件)

依據上述,發現了一個問題我們是可以點選沒錯,但是看完了怎退出? 

所以又是同一招自己加入按鈕!

因為我們選取後觸發的的是ListView的SelectItemTemplate樣板,所以我們要加按鈕在這個樣板。

前端程式碼如下:

<SelectedItemTemplate>
<asp:Button ID="Button3" runat="server" Text="看完了,恢復" CommandName="my_Detail" />
</SelectedItemTemplate>

大家要注意到它的CommandName是設置my_Detail

(重點!)ListView只要有按鈕被按下,就會觸發ItemCommand事件,所以我們要處理此事件就要寫在這裡面。

後置程式碼如下:

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
{
  if (e.CommandName == "my_Detail")  //對應上面的CommandName
 {
     ListView1.SelectedIndex = -1;
     //-1代表離開「選取」按鈕的狀態!
  }
}

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

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