|  | ■No78682 (とし さん) に返信
> コード名称を取得したのでここで2個目のBOXに名称をセットしたいと思っています。
1個目のテキストボックス (サーバー側で言うと TextBox コントロール)の AutoPoskBack 
プロパティは True に設定されていてユーザー入力完了で自動的にポストバックがかかり、
Insertコード_TextChanged ハンドラに制御が飛ぶということで良いのですね。
で、問題は Insertコード_TextChanged ハンドラで2個目の TextBox オブジェクトへの参照
が取得できないということですよね?
であれば、参考にされている記事の「◆◆◆ 追記 その2 ◆◆◆」に書いてある再帰を使っ
て2個目の TextBox オブジェクトへの参照を取得できると思います。
また、1個目の TextBox.Text プロパティの値は Insertコード_TextChanged ハンドラの引数 
sender(即ち1個目の TextBox)から取得するのが良いと思います。
以下のような感じです。(コードは C# ですが、分かりますよね?)
protected void Insertコード_TextChanged(object sender, EventArgs e)
{
    // TextBox2 は2個目の TextBox の ID
    Control ctrl = FindControlRecursive(GridView1, "TextBox2");
    if (ctrl is TextBox)
    {
        string Code = ((TextBox)sender).Text;
        KoumokuClass KoumokuObj = new KoumokuClass();
        string KoumokuName = KoumokuObj.GetKoumokuName(Labo, Code);
        ((TextBox)ctrl).Text = KoumokuName;
    }
}
protected Control FindControlRecursive(Control Root, string Id)
{
    if (Root.ID == Id)
        return Root;
    foreach (Control Ctl in Root.Controls)
    {
        Control FoundCtl = FindControlRecursive(Ctl, Id);
        if (FoundCtl != null)
            return FoundCtl;
    }
    return null;
} 
> ListViewで1個目のコードの取得方法と2個目に名称をセットする方法があればチャレンジ
> したいと思います。
ListView を使えば、SqlDataSource の InsertParameters(InsertCommand プロパティで使用
されるパラメータを格納するパラメータ コレクション)の内容を、ユーザー入力の TextBox 
をバインド先に設定した ControlParameter に書き換えるというようなウラワザ的なことはし
なくて済むという大きなメリットがあります。
ただし、それと今回の話(1個目の TextBox のユーザー入力をベースにサーバー側で2個目の 
TextBox への入力を取得して設定する)は別の問題で、今回の話を実現するには ListView を
使っても上記と同様なことが必要になります。
 |