編集(もっと簡単に):私は、左側のツリービューと私は私のコントロールを追加するには、右側のパネルのリストと制御「の設定を」持っている切り替え
。これらの要素はテーブルの内側に配置され、ajaxパネルで囲まれます。
私は2つの要素car1とcar2を持つツリーノードの車を持っているとしましょう。私はアイテムをクリックすると、私はPage_Init上で右ユーザーコントロールを読み込むことができるように隠されたフィールド内の選択したツリーノードのIDとタイプを保存し、この車のためのデータがデータベースから収集されLoadEntityItemで
protected void Page_Init(object sender, EventArgs e)
{
var type = this.Request.Form["ctl00$MainContent$ctl00$typeId"];
var id = this.Request.Form["ctl00$MainContent$ctl00$entityId"];
if (!string.IsNullOrEmpty(type) && !string.IsNullOrEmpty(id))
{
this.LoadUserControl(type, id);
}
}
private void LoadUserControl(string type, string id)
{
if (Convert.ToInt32(type) != 0)
{
switch (Convert.ToInt32(type))
{
case (int)SkTopics.Product:
this.AddUserControl("../Modules/Product.ascx", this.Product, type, id);
break;
}
}
}
private void AddUserControl(string controlName, Panel panel, string type, string id)
{
// Init new user cotntrol
control = (BaseControl)this.LoadControl(controlName);
control.LoadEntityItem(Convert.ToInt32(id));
// Setting the user control ID
var replace = controlName.Replace("../Modules/", string.Empty);
string userControlId = replace.Split('.')[0] + id;
var targetControl = panel.FindControl(userControlId);
if (object.Equals(targetControl, null))
{
control.ID = userControlId;
control.DataBind();
panel.Controls.Add(control);
}
}
と値はテキストボックスのテキストとして設定されます。 2番目の車に切り替えると、新しい値が表示されます。
問題:テキストボックス内の値を変更し、保存ボタンを押して、ユーザーコントロールの保存メソッドを呼び出します。これ以降、car 1のデータがいっぱいになっても、car 1の値が再び表示されます。私はcar1のデータを見て、私は完全に異なるタイプのコントロールに切り替えてからcar1に戻っていかなければなりません。
もう1つの問題は、私はユーザーコントロールの内部にバイナリイメージを持っていて、データがinitに書き込まれることです。私は画像が設定されていない次の車に向かって、画像データをnullに設定しますが、前の車からの画像が表示されます。オニル私は別の画像データを設定すると、新しい画像が表示されます。
私は気づいたことがあります: ユーザーコントロールの中で私はjavascriptの機能を呼び出しますが、これは保存ボタンをクリックしたときにのみ呼び出されます。ツリーノードの切り替えと保存ボタンのクリックには違いがあるようですね。
ScriptManager.RegisterStartupScript(this, this.GetType(), "InitScrewPointsForDragging", "InitScrewPointsForDragging();", true);
これは以前よりも簡単だったと思います。
答えをより簡単に説明できますか –
私の質問が更新されました。そうでない場合は、私に知らせて、もう一度試してみましょう – Caipigott