[教學]ASP.net精靈式的增修刪

1. 拉控制項

拉一個SqlDataSource,一個GridView,一個DetailsView
設定好資料庫連線(步驟略)

 

2.設定SqlDataSource (除錯也來這裡除)

要照以下設定

SELECT依序點出所有欄位

UPDATE依序點出所有欄位,主鍵在SET取消勾勾,在篩選Filter上打問號,其他在New Value上打問號

DELETE依序點出主鍵欄位,在篩選Filter上打問號

(篩選沒弄好會導致全部修改或全部刪除,SET沒取消勾勾會無法修改)

 image001.png

 image003.png

 image005.png

 image007.png

image009.png 

image011.png 

3.設定GridView & DetailsView

確認DataKeyNames的值,是否為當前的主鍵(通常是流水自動編號)

 image013.png

照圖把EditDelete鍵叫出來

 image015.png

 image017.png

 

DetailsView要注意DefaultMode是甚麼模式,和對應的AutoGenerateXXXButton有沒有打開

這裡例子是DefaultMode=Insert新增模式,AutoGenerateInsertButton=True

 image019.png

 

4. 程式測試看有無錯誤

這時候應該GridViewDetailsView都可以使用了

(這裡沒有做資料驗證,請打入適當型態的資料)

 image021.png

進階,條列式的資料用DropDownList做顯示

1. 拉控制項

除了之前的SqlDataSource1以外,再拉一個SqlDataSource,抓條列資料給DropDownList

2. GridView的特定欄位變更成手動樣版模式

 image023.png

 image025.png

 

把原本的Textbox換成DropDownList

3. DropDownList設定SqlDataSource

 image027.png

 image029.png

displayvalue不要搞反

4. DropDownList設定資料綁定

再來設定資料綁定,讓DropDownList能和GridView溝通

 image031.png 

選擇原來SqlDataSource1中的類型編號(Forign Key,欲修改的地方)

 image033.png

(DetailsView的欄位也請如法炮製,當然還可以做延伸)

5.程式測試看有無錯誤

 image035.png

6.修正顯示模式,讓新增資料按鈕起作用

按下新增資料,跳出DetailsView,隱藏GridView
新增完資料,跳出GridView,隱藏DetailsView

按鈕雙點叫出Button1.Click事件

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

        DetailsView1.Visible = True

        GridView1.Visible = False

    End Sub

 

DetailsView按下事件鈕(閃電形狀),在ItemInserted這行右半側雙點

 image037.png

叫出DetailsView1.ItemInserted事件

    Protected Sub DetailsView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles DetailsView1.ItemInserted

        DetailsView1.Visible = False

        GridView1.Visible = True

    End Sub

 

 

 

SQL中的?VS2008中特有的參數設定,也可以是@變數名,在SELECT中有?,會另外詢問你如何定義參數

INSERT新增和UPDATE更新的?的意思是,新增和更新模式下的文字框(使用者會輸入)的內容,所以不會詢問

詢問的視窗

 image039.png

做為TextBox1的值

 image041.png

還有其他進階設定供參考

 image043.png

 

另一個做sqlDataSource做法

image045.png  

此例是把文字框資料帶入SQL裡的LIKE中,比對查詢電影名稱的其中字串

 image047.png

 

在〈[教學]ASP.net精靈式的增修刪〉中有 2 則留言

  1. 請問
    我將
    GridView 樣板的 EditItemTemplate 的這一欄[Column] 換成 DropDownList
    其顯示正常, 也可以更新!
    其該欄在MSSQL 裡Table的資料行 [這一欄] 內容是類似如下
    [這一欄]
    123
    145
    abc
    666
    666
    abc
    123
    我好帥
    我好帥
    筆數多而且會有重複的值 是不是有辦法 在按下編輯後 看到 [這一欄] 的DropDownList 下拉的值不會重複?
    像先從SQL Select distinct 過濾重複的值那般~
    請問該怎麼做呢?
    還是可同時從別張Table表取值?
    謝謝謝謝謝謝謝謝謝感謝!
    我貼一下 刻意把資料行都改成 這一欄
    在ItemTemplate 的[這一欄]格式沒變 預設GridView的Label
    <程式碼>
    <asp:TemplateField HeaderText="這一欄" SortExpression="這一欄">
    <EditItemTemplate>
    <asp:DropDownList ID="DropDownList1" runat="server"
    DataTextField="這一欄" DataValueField="這一欄"
    SelectedValue='<%# Bind("這一欄") %>’ DataSourceID="SqlDataSource1">
    </asp:DropDownList>
    </EditItemTemplate>
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Bind("這一欄") %>’></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    </程式碼>
    版主回覆:(01/23/2012 07:13:21 AM)
    你可能需要E-mail完整的語法給我才看得懂

  2. 請問一下~我照你的方法寫了1~5的地方~可以使用~可是因為我要寫的方法是多個選項,所以不能直接指定Datasourse,而是使用程式碼(C#)連接gridview和detailsview(連結同一個),但是這樣的話detailsview的顯示就會失敗~會變成只有出現"插入 取消",而沒有可以打內容的東西,請問問題是出在哪裡呢><?

留言功能已關閉。