iT邦幫忙

DAY 11
0

給學弟的ASP.NET網頁學習經驗系列 第 11

ASP.NET學習經驗#11----跨網頁展示資料不再.aspx?DataID=xx

點選新開子網頁呈現資料細則,一般會透過QueryString方式傳遞,學習來點不一樣的!!!!

在 ASP.NET Web 網頁中跨網頁公佈(這樣操作有點小題大作就是當作練習就好)

在GridView裡面先加入了個『選取』的CommandField

再把它轉換成TemplateField並且在編輯樣板裡對LinkButton設置要外連網頁的PostBackUrl

此時GridView應該是會變成如此:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" Height="131px" Width="280px">
            <Columns>
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="Content" HeaderText="Content" SortExpression="Content" />
                <asp:BoundField DataField="Date" DataFormatString="{0:d}" HeaderText="Date" SortExpression="Date" />
                <asp:TemplateField InsertVisible="False" ShowHeader="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select" PostBackUrl="~/Detail.aspx" Text="more"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
 </asp:GridView>

(因為自己一開始不太會操作不知道誤打誤撞才這樣亂亂來,

正規下應該是新增個TemplateField,在樣板裡新增個LinkButton

然後設定CommandName="Select",接續如上)

接著就是要設置目標網頁:

先在網頁頂部加入

<%@ PreviousPageType VirtualPath="~/來源網頁.aspx" %>

這樣就可以對來源網頁使用強型別取得裡面的資料,

加入個DetailsView1、SqlDataSourse加入連接字串,方便撈資料庫跟簡易呈現

(並沒有直接指派給DetailView但是有先編輯一下控制項的內容)

然後在Page_Load時取得前一頁的GridView資訊

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.PreviousPage != null)
    {
        GridView mygv = (GridView)<span style="background-color:#FFFF00">Page.PreviousPage.FindControl("Gridview1");</span>
        if (mygv != null)
        {
                    
            SqlDataSource1.SelectCommand = "SELECT * FROM [Table] WHERE ([Id] =" + mygv.SelectedDataKey.Value+")";
            //GridView要能取出對應的索引鍵值,檢查屬性DataKeyNames是否有對應的索引值
            DetailsView1.DataSourceID = "SqlDataSource1";
        }
    }
}

小提醒:指派DataSourceID時控制項會自動重新DataBind

這樣就不用擔心在網頁之間透漏任何資訊~~~


上一篇
ASP.NET學習經驗#10----功能強大令人又愛又恨的GridView
下一篇
ASP.NET學習經驗#12----傻傻分不清楚<%..%>的Inline Code符號
系列文
給學弟的ASP.NET網頁學習經驗30

2 則留言

0
mis2000lab
iT邦好手 1 級 ‧ 2014-09-26 21:37:54

Good!讚喔~ :-)

Ben iT邦新手 3 級 ‧ 2014-09-29 13:01:03 檢舉

謝謝前輩!!!!

0
GJ
iT邦研究生 3 級 ‧ 2014-09-29 10:13:35

簡單明瞭好用灑花

我要留言

立即登入留言