目前,我有一个需要改进的遗留项目,其中一个特定部分给我带来了问题。我是DevExpress的新手(使用11.2.10版本),对当前的.NET开发来说还是一个新手。
在查看Stack和DexExpress支持论坛和文档时,我发现很多东西似乎与我想要做的事情很接近(主要涉及selectedindexchanged等),但没有任何东西恰好适合这个... < / p>
以下是发生的事情:
网站的一个页面(“按钮”)允许编辑大量信息,其中大部分信息整齐地分组在ASPxRoundPanels等数据字段中。
其中一个圆形面板有一个ComboBox,显示按钮可以执行的所有“操作”列表。
此语句的select语句(SQL_SelectAllButtonActions)正常工作,从数据库的Action表中提取所有可能的操作。
组合框(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>
以下是我的DataClasses文件中的内容:
<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));
}
答案 0 :(得分:0)
根据DevExpress给出的答案:
由于处理了两个组合框的客户端SelectedIndexChanged事件,因此回调被发送到ASPxCallback控件,并且当前值通过GetValue方法作为参数传递。
此外,在ASPxCallback1_Callback方法中,应该在交换机块中添加另外两种情况。在这些情况下,将调用SQL Update命令以根据当前所选按钮的选定值更新数据。