0

主にバーコードでスキャンしたデータを入力するために、約 30 個のテキスト ボックスを配置する必要がある WebForm があります。最初のテキスト ボックスのみを表示し、前のテキスト ボックスにテキストが入力されている場合にのみ、次のテキスト ボックスを表示したいと考えています。選択した変更のテキストボックスで「If」条件も使用しようとしましたが、機能しません。解決策はありますか?

4

6 に答える 6

1

これらのテキスト ボックスには、「textbox1」、「textbox2」、「textbox3」のような名前を付けて、現在のテキスト ボックスのインデックスを簡単に見つけられるようにします。次に、KeyDown イベントを使用して、表示されるものと表示されないものを制御できます。これは実用的な例ではありませんが、良い方向性を示すはずです。

        int currentIndex = 1;

        private void TextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            TextBox t = Controls["TextBox" + (currentIndex + 1).ToString()] as TextBox;
            t.Visible = true;
            currentIndex +=1;
        }
于 2013-05-03T11:08:39.913 に答える
1

Jquery で問題を解決できます。私は 4 つのテキスト ボックスを取るサンプル コードを作成しました。最初は最初のテキスト ボックスのみが Web フォームに表示されます。ユーザーが最初の TextBox に値を入力すると、次のテキスト ボックスが表示されない場合、前のテキスト ボックスに値がある場合、次のテキスト ボックスが自動的に表示されます。

サンプルコードを以下に示します。

<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />

$('input:text:not(:eq(0))').hide()
$('input').on("change paste keyup", function () {
    if ($(this).val().length > 0) {
       $(this).next().show();
    }
else
{
    $(this).next().hide();
}
});

同じサンプル アプリケーションを作成しました。デモについては、指定されたリンクをクリックしてください。

デモアプリケーションを見る

クライアント側のコードであるため、サーバー側よりもパフォーマンスが非常に高速です。

あなたの問題が私のアイデアによって解決されたと感じたら、私に投票してください。

于 2013-05-03T11:05:03.103 に答える
1

これにはjava-scriptを使用する必要があります。これにサーバー側関数を使用すると、サーバーに何度もアクセスするため、アプリケーションのパフォーマンスも低下します。

したがって、1 つの引数を受け入れる Java スクリプト関数を作成します。この引数は、次のテキスト ボックス ID (表示したいテキスト ボックス) を取ります。この JavaScript 関数を次のように呼び出します:- onkeyup="calgrid(this,"TextBox2");" TextBox2 の代わりに nexttextbox id を渡します...

<script type="text/javascript" language="javascript">

 function calgrid(firsttextbox,nexttextbox)
{

    var id=firsttextbox.id;
    var lastindex= id.lastIndexOf("_");
    var strclnt=id.slice(0,lastindex+1);
    var txtboxvalue=document.getElementById(firsttextbox).value;
if(txtboxvalue!="")
{
      document.getElementById(strclnt+nexttextbox).style.visibility='visible';
}
else
{
  document.getElementById(strclnt+nexttextbox).style.display = "none";
}


}
</script>

注:- textbox プロパティから visible=false を実行する場合、javascript から visible=true を実行することはできません。したがって、すべてのテキストボックスのスタイルを設定する style="display:none"

于 2013-05-03T11:11:25.713 に答える
0

このコードを試してください

最初のテキストボックスはデフォルトで表示されるため、最初に flag=1 を設定します

private void visibleTextBox(Control c) { int フラグ = 1;

        foreach (Control c1 in c.Controls)
        {
            if (c1.GetType() == typeof(TextBox))
            {
                if (flag == 1)
                {
                    ((TextBox)c1).Visible = true;
                }
                else
                {
                    ((TextBox)c1).Visible = false;
                }

                if (((TextBox)c1).Text != "")
                {
                    flag = 1;
                }
                else
                {
                    flag = 0;
                }
            }
        }
    }
于 2013-05-03T10:51:01.420 に答える
0

最初のテキストボックスでKeydownイベントを使用できます

于 2013-05-03T10:41:24.843 に答える