Asp.net 未从会话中保存的SQLdatasource获取ASPxCombobox 受保护的无效页面加载(对象发送方,事件参数e) { 如果(!IsPostBack) { if(会话[“SavedSQLSources”]==null) SavedSQLSources=新字典(); SavedSQLSources.Add(aspxcombox1.ID,SqlDataSource1); SavedSQLSources.Add(aspxcombox2.ID,SqlDataSource2); 会话[“SavedSQLSources”]=SavedSQLSources; } 其他的 { if(会话[“SavedSQLSources”]!=null) SavedSQLSources=(字典)会话[“SavedSQLSources”]; } }

Asp.net 未从会话中保存的SQLdatasource获取ASPxCombobox 受保护的无效页面加载(对象发送方,事件参数e) { 如果(!IsPostBack) { if(会话[“SavedSQLSources”]==null) SavedSQLSources=新字典(); SavedSQLSources.Add(aspxcombox1.ID,SqlDataSource1); SavedSQLSources.Add(aspxcombox2.ID,SqlDataSource2); 会话[“SavedSQLSources”]=SavedSQLSources; } 其他的 { if(会话[“SavedSQLSources”]!=null) SavedSQLSources=(字典)会话[“SavedSQLSources”]; } },asp.net,session,devexpress,code-behind,sqldatasource,Asp.net,Session,Devexpress,Code Behind,Sqldatasource,您好,我有多个ASPxCombobox,每个都有自己的数据源。所以我先救了他 字典中每个控件ID及其对应的数据源对象 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["SavedSQLSources"] == null) SavedSQLSources = new Diction

您好,我有多个ASPxCombobox,每个都有自己的数据源。所以我先救了他 字典中每个控件ID及其对应的数据源对象

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["SavedSQLSources"] == null)
                SavedSQLSources = new Dictionary<String, SqlDataSource>();

            SavedSQLSources.Add(ASPxComboBox1.ID, SqlDataSource1);
            SavedSQLSources.Add(ASPxComboBox2.ID, SqlDataSource2);

            Session["SavedSQLSources"] = SavedSQLSources;
        }
        else
        {
            if (Session["SavedSQLSources"] != null)
                SavedSQLSources = (Dictionary<String, SqlDataSource>)Session["SavedSQLSources"];
        }
    }
受保护的无效Cmb\u回调(对象源,CallbackEventArgsBase e)
{
ASPxComboBox组合框=(ASPxComboBox)源;
字符串[]args=e.Parameter.Split(“|”);
对于(int i=0;i
在页面上执行一些操作,然后每个控件启动其回调并将其数据绑定到相应的数据源

嗯。。。当直接使用数据源时,可以完美地工作,但当数据源来自会话中保存的数据源(来自SavedSQLSources)时,不会获取任何项。 对象的实例不应该是相同的吗


提前感谢您,TheRainFall。

好的,我放弃了Dictionary方法,通过从客户端将每个ASPxCombobox链接到其SqlDatasource来解决这个问题:

    protected void Cmb_Callback(object source, CallbackEventArgsBase e)
    {
        ASPxComboBox comboBox = (ASPxComboBox)source;
        string[] args = e.Parameter.Split('|');

        for (int i = 0; i < args.Length; ++i)
            SavedSQLSources[comboBox.ID].SelectParameters[i].DefaultValue = args[i];
        comboBox.DataSourceID = SavedSQLSources[comboBox.ID].ID;
        comboBox.DataBind();
    }
然后在回调中,我使用从客户端引用的datasourceID从父容器中获取了sqldatasource实例:

DataSourceID="SqlDataSource1"
主要目的是在不重新加载页面的情况下重新加载所有combobox,尽管我只能在客户端完成此操作

SqlDataSource tempSqlDatasource= (SqlDataSource)comboBox.Parent.FindControl(comboBox.DataSourceID);