目前,我有一個遺留項目需要改進,其中一個特定的部分給我的問題。我是DevExpress的新手(使用11.2.10版本),對於當前的.NET開發來說相當新穎。如何通過SelectedIndexChange或SelectedItemChange等通過ASPxComboBox平穩地保存更新的數據
在查看Stack和DexExpress支持論壇和文檔時,我發現了很多似乎與我正在嘗試做的事情(主要涉及selectedindexchanged等)的東西,但完全沒有什麼符合這個...
這裏是正在發生的事情:
其中一個網站的頁面(「按鈕」)允許編輯了大量的信息,其中大部分都整齊地組合在一起ASPxRoundPanels數據字段等
這些圓形面板中的一個具有ComboBox,它顯示按鈕可以顯示的所有「操作」列表做。
此選擇語句(SQL_SelectAllButtonActions)正常工作,從數據庫的操作表中提取所有可能的操作。
組合框(buttonAction)在從該列表中預先選擇存儲爲Button表上的Action_Id的特定值時正常工作。
(到目前爲止,一切都很好。)
目標:
客戶很想當由用戶選擇的組合框的值在頁面(和數據庫)自動更新。不做回發,但只需改變下拉(組合)框中的值。
假設Button_Id 1有一些值,其中包括Action_Id 8.如果用戶要通過buttonAction組合框選擇不同的值,那麼我們應該更新Button_Id 1的記錄以反映新的Action_Id值(即不是8)。
我有一個更新命令作爲SqlDataSource(SQL_UpdateButtonAction)的一部分,它在數據庫端手動測試時工作。
下面是我的代碼,它不會引發錯誤。但它不會爲通過組合框編輯的按鈕保存/更新Action_Id。
我錯過了哪些部分?歡迎所有的幫助和建議,非常感謝!
<PanelCollection><dx:PanelContent ID="PanelContent1" runat="server"
SupportsDisabledAttribute="True">
<div class="headerDiv">
<div class="buttonDiv">
<dx:ASPxButton ID="ASPxButton1" runat="server" Text="Save Changes"
AutoPostBack="False">
</dx:ASPxButton>
</div>
<div style="float: left; width: 390px;">
<dx:ASPxRoundPanel ID="ASPxRoundPanel1" runat="server" Width="400px"
HeaderText="Details">
<PanelCollection>
<dx:PanelContent ID="PanelContent3" runat="server">
<div class="labelDiv"> Action </div>
<div class="fieldDiv">
<dx:ASPxComboBox ID="buttonAction" runat="server" Width="240px"
DataSourceID="ButtonActionsDataSource" TextField="name"
ValueField="action_id" ValueType="System.Int32">
</dx:ASPxComboBox>
/div>
<asp:SqlDataSource ID="ButtonActionsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:<snip> %>"
SelectCommand="SQL_SelectAllButtonActions" SelectCommandType="StoredProcedure"
UpdateCommand="SQL_UpdateButtonAction" UpdateCommandType="StoredProcedure">
<UpdateParameters>
<asp:Parameter Name="button_id" Type="Int32" />
<asp:Parameter Name="action_id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
這裏是什麼樣子在我的數據類文件:
<Function Name="dbo.Sql_UpdateButtonAction" Method="Sql_UpdateButtonAction">
<Parameter Name="button_id" Type="System.Int32" DbType="Int" />
<Parameter Name="action_id" Type="System.Int32" DbType="Int" />
<Return Type="System.Int32" />
</Function>
<Function Name="dbo.Sql_UpdateButtonItem" Method="Sql_UpdateButtonItem">
<Parameter Name="button_id" Type="System.Int32" DbType="Int" />
<Parameter Name="item_id" Type="System.Int32" DbType="Int" />
<Return Type="System.Int32" />
</Function>
[global::System.Data.Linq.Mapping.FunctionAttribute(Name = "dbo.Sql_UpdateButtonAction")]
public int Sql_UpdateButtonAction([global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> button_id, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> action_id)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), button_id, action_id);
return ((int)(result.ReturnValue));
}
[global::System.Data.Linq.Mapping.FunctionAttribute(Name = "dbo.Sql_UpdateButtonItem")]
public int Sql_UpdateButtonItem([global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> button_id, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> item_id)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), button_id, item_id);
return ((int)(result.ReturnValue));
}
方法Sql_UpdateButtonAction和Sql_UpdateButtonItem工作正常,但當你改變下拉沒有任何反應(沒有回傳?) –
啊,組合框中的值確實會改變。但數據庫值不會更改(因此,如果我刷新頁面,它將恢復爲顯示原始值。)同樣,沒有錯誤消息。 –