2013年11月14日 星期四

SqlDataSource to GridView

先前已用 LinqDataSource to GridView 了
這一次改以SqlDataSource來實做吧




資料的部分可以直接從旁邊的伺服器總管
把該 Table 拉進來,剩下的IDE會自動處理完









至於顯示的欄位如下
從設定資料來源點選再來會看到ConnectionString的設定
這一步IDE也會自動處理掉,可以直接往下一步進行
再來就如下圖了,自行選擇需的吧
在這我只是全選,然後在原始檔那邊把不要的砍掉了
為之後要做的DetailsView做伏筆 :p


要做新增修改刪除記得打勾唷














上一篇說到ManagerID的問題,在這裡要把他解掉!!
一樣透過精靈到這個畫面,只是這一次要選的是自訂SQL句


到這個畫面自行下SQL 語法哦
小弟是都先在SQL Server把語法寫好再貼過來做測試
畢境是微軟自家的,理應不會差太多才是!XD

再來將ManagerID欄位轉成TemplateFiled



















再切到原始檔直接對程式碼修改
找到剛才的ManagerID
<asp:TemplateField HeaderText="ManagerName" SortExpression="ManagerID">
 <EditItemTemplate>
  <asp:Label ID="Label1" runat="server" Text='<%# Bind("EmaployeeManagerName") %>'></asp:Label>
 </EditItemTemplate>
 <ItemTemplate>
  <asp:Label ID="Label1" runat="server" Text='<%# Bind("EmaployeeManagerName") %>'></asp:Label>
 </ItemTemplate>
</asp:TemplateField>

將EditItemTemplate裡的控制項換成DropDownList
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="EmaployeeManagerName" DataValueField="EmployeeManagerID" SelectedValue='<%# Bind("EmployeeManagerID") %>'> </asp:DropDownList>

接下來 Ctrl + F5 執行看看吧!!!^^














補充:
仔細一看會發現DropDownList裡的值有重復耶
畢境這是從併過的表抓出來的
所以會有重復是在所難免的,如圖



想到的解法是再拉一個SqlDataSource過來,
但這一次只抓主管或是把所有員工抓進來也行
總之,也是視實務需要嘍
只是這樣似乎又踫出一個問題
假設現在六名1~6
其中1的下面有2、3兩名下屬
而2下面又有4、5,3只有6一名
如果把6的主管換成1~5任一名是都沒有問題的
但,如果把1的主管設定成2~6任一名的話,怎麼想都怪怪的
這樣子一來這公司的組織就像追著自己尾巴的狗一樣
看不到頭和尾啊
所以這邊要視自己需要看是追加一個欄位
(但這樣子一來似乎又會破壞掉DBA的設計,畢境他會這樣子設計是有他的目的在的)
又或者是要在前台做判斷
這問題就交給各位自行解決嘍~











沒有留言:

張貼留言