解決 DropDownList 在控制項樣版中無法記錄狀態的問題
碰到一個怪怪的問題:
GridView 過濾資料除了直接在 SqlDataSource 的 SelectQuery 加上 WHERE 子句外 (包含參數),也可以利用 SqlDataSource.FilterExpression 屬性來實現,同時該屬性也有對應的參數集合 SqlDataSource.FilterParameters
使用方法也非常簡單,例如
SqlDataSource.FilterExpression = "[欄位名稱]=常數值";
適合直接在程式中設定,或者
SqlDataSource.FilterExpression = "[欄位名稱]={0}";
其中 [欄位名稱] 必須出現在 SelectQuery 的 SELECT 子句中,否則會產生錯誤
而 SqlDataSource.FilterParameters 可以利用程式設定對應欄位參數的 DefaultValue,也可以直接對應到其它控制項
SqlDataSource.FilterParameters["[欄位名稱]"].DefaultValue = ...
不過如果要多一個選擇 "全部" 的選項的話,這個方式似乎也沒有比較方便啊
- 當 DropDownList 放在 GridView 的 HeaderTemplate 中時,PostBack 後就是無法記得上次選擇的項目
- 同樣的 DropDownList 移到外面後就一切正常了
- 在 DropDownList.SelectedIndexChanged 事件中用
GridView.Attributes["MyIndex"] = DropDownList.SelectedIndex.ToString();
的方式把選項記錄下來 - 在 GridView.RowDataBound 事件中用
DropDownList.SelectedIndex = Convert.ToInt32(GridView.Attributes["MyIndex"]);
的方式還原
GridView 過濾資料除了直接在 SqlDataSource 的 SelectQuery 加上 WHERE 子句外 (包含參數),也可以利用 SqlDataSource.FilterExpression 屬性來實現,同時該屬性也有對應的參數集合 SqlDataSource.FilterParameters
使用方法也非常簡單,例如
SqlDataSource.FilterExpression = "[欄位名稱]=常數值";
適合直接在程式中設定,或者
SqlDataSource.FilterExpression = "[欄位名稱]={0}";
其中 [欄位名稱] 必須出現在 SelectQuery 的 SELECT 子句中,否則會產生錯誤
而 SqlDataSource.FilterParameters 可以利用程式設定對應欄位參數的 DefaultValue,也可以直接對應到其它控制項
SqlDataSource.FilterParameters["[欄位名稱]"].DefaultValue = ...
不過如果要多一個選擇 "全部" 的選項的話,這個方式似乎也沒有比較方便啊
留言