2009年11月21日 星期六

RadGrid 擴充欄位處理

一個簡單的範例
要從下面的 SQL 取出資料

select name "姓名", grade "年級", id 學號 from student

想要產生以下的結果

學號 姓名/ 年級
A0001 Philip
3
A0002 Jersey
3


在 RadGrid 要如何實作?

1. 在 RadGrid 中利用 Property Editor 加入一個 Column (Bound Column) 並定義為 Template Column
可利用 Convert this column into Template Column
PS. 不要忘了原先的姓名與年紀兩個欄位,不過要把他們 Visible 變成 False

<telerik:GridTemplateColumn UniqueName="column"  HeaderText="姓名/ 年級">
            <EditItemTemplate>
                <asp:TextBox runat="server"></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label runat="server" ID="DATA"></asp:Label>
            </ItemTemplate>
        </telerik:GridTemplateColumn>

在 .aspx 中會產生對應的一個 ItemTemplate, Telerik 會先放好一個陽春的 asp:Label 在那邊
記得將個 ID 補齊, 以便後面的程式在 Data Bind 時把資料寫進去

2. 補上 RadGrid.DataItemBound 的事件
3. 當 DataItemBound 被 Trigger 時執行以下的 Code

 protected void Mytable_ItemDataBound(object sender, GridItemEventArgs e)
    {
        // 確定是否是該對應的 SourceId, 其實也可以不用一定要判斷,有時 DataSourceID 可能不會用到
        if (e.Item is GridDataItem && e.Item.OwnerTableView.DataSourceID == "SqlDataSource1")
        {
            Label lbl = e.Item.FindControl("DATA") as Label;
            lbl.Text = (e.Item as GridDataItem)["姓名"].Text" + "<br>" + (e.Item as GridDataItem)["年級"].Text";           
        }
    }


沒有留言:

張貼留言