如何設定GridView編輯時使用DropDownList,且可指定預設值
設定編輯時使用DropDownList
1. 先將你的欄位,設定成TemplateField
2. 再到GridView物件中,使用「編輯樣版」的功能
3. 選擇EditItem Template,並拉入一個DropDownList控制項
4. 開始設定DropDownList的資料來源,設定方式就跟一般的DropDownList設定一樣
5. 設定如下的預設值
6. 完成
指定預設值
只要在 中加否 SelectedValue=""的屬性就好了。
雖然這個屬性一開始在輸入時,它不會自動帶出intellicense的資訊,原本以為是不可行的。沒想到,直接手動輸入後,還是一樣有效。
範例:
編輯完畢時取得DropDownList的值
原本是想說在SQLDataSource中設定直接取用TemplateField中的控制項來作為更新資料庫的SQL指令中的變數值來源。可惜,這種方式是不行的。好像是都無法取用到TemplateField中所使用到的控制項。
目前的解決方式就是去改用GridView的OnRowCommand()函式,並在這個函式中,取得正在編輯的Row的控制項。
範例:
1. 先將你的欄位,設定成TemplateField
2. 再到GridView物件中,使用「編輯樣版」的功能
3. 選擇EditItem Template,並拉入一個DropDownList控制項
4. 開始設定DropDownList的資料來源,設定方式就跟一般的DropDownList設定一樣
5. 設定如下的預設值
6. 完成
指定預設值
只要在
雖然這個屬性一開始在輸入時,它不會自動帶出intellicense的資訊,原本以為是不可行的。沒想到,直接手動輸入後,還是一樣有效。
範例:
<asp:TemplateField HeaderText="組別" SortExpression="TeamID"> <EditItemTemplate> <asp:TextBox ID="textEditTeam" runat="server" Text='<%# Bind("TeamID") %>'></asp:TextBox> <asp:DropDownList ID="dlEditTeam" runat="server" DataSourceID="sqlTeam" DataTextField="TeamName" DataValueField="TeamID" SelectedValue='<%# Bind("TeamID") %>'> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lblEditTeam" runat="server" Text='<%# Bind("TeamID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField>
編輯完畢時取得DropDownList的值
原本是想說在SQLDataSource中設定直接取用TemplateField中的控制項來作為更新資料庫的SQL指令中的變數值來源。可惜,這種方式是不行的。好像是都無法取用到TemplateField中所使用到的控制項。
目前的解決方式就是去改用GridView的OnRowCommand()函式,並在這個函式中,取得正在編輯的Row的控制項。
範例:
protected void OnITResRowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Update") { int rowIndex = -1; if (int.TryParse(e.CommandArgument.ToString(), out rowIndex) == false) return; DropDownList dlEditTeam = (DropDownList)this.gvITResourceSetting.Rows[rowIndex].FindControl("dlEditTeam"); if (dlEditTeam != null) { this.dsITResource.UpdateParameters["TeamID"].DefaultValue = dlEditTeam.SelectedValue; } } }
留言
張貼留言