1

問題: テキストを入力している asp.net Textbox があり、テキストの変更時にその値を変数に割り当てる必要がありますが、これは起こりません。

質問: Textbox から値を取得する最良の方法は何ですか?

C# コード:

protected void btnSourceConnect_Click(object sender, EventArgs e)
{
    if (Util.Connection(SourceString, 0))
    {
        lblTesting.Text = "Working!";
    }
    else
    {
        lblTesting.Text = "It No Work";
    }
}
protected void txtSourceServer_TextChanged(object sender, EventArgs e)
{
        SourceString.DataSource = txtSourceServer.Text;      
}

protected void txtSourceDatabase_TextChanged(object sender, EventArgs e)
{

        SourceString.InitialCatalog = txtSourceDatabase.Text;

}

protected void txtSourceUN_TextChanged(object sender, EventArgs e)
{

        SourceString.UserID = txtSourceUN.Text;

}

protected void txtSourcePass_TextChanged(object sender, EventArgs e)
{

        SourceString.Password = txtSourcePass.Text;   
}

Asp.Net コード:

<table style="width: 100%;Border:1px solid Black;">
    <tr>
            <td class="style1">
                &nbsp;
                Source Server:</td>
            <td class="style1">
                &nbsp;&nbsp;
                <asp:TextBox ID="txtSourceServer" runat="server" 
                    ontextchanged="txtSourceServer_TextChanged" AutoPostBack="True"></asp:TextBox>
            </td>
            <td class="style1">
                &nbsp; Source Database:
            </td>
            <td class="style1">
                &nbsp;&nbsp;
                <asp:TextBox ID="txtSourceDatabase" runat="server" 
                    ontextchanged="txtSourceDatabase_TextChanged" AutoPostBack="True"></asp:TextBox>
            </td>

        </tr>
        <tr>
            <td class="style1">
                &nbsp; User Name:
            </td>
            <td class="style1">
                &nbsp;&nbsp;
                <asp:TextBox ID="txtSourceUN" runat="server" 
                    ontextchanged="txtSourceUN_TextChanged" AutoPostBack="True"></asp:TextBox>
            </td>
            <td class="style1">
                &nbsp; Password:
            </td>
            <td class="style1">
                &nbsp;&nbsp;
                <asp:TextBox ID="txtSourcePass" runat="server" 
                    ontextchanged="txtSourcePass_TextChanged" AutoPostBack="True"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="style1">
                &nbsp;
            </td>
            <td class="style1">
                &nbsp;
            </td>
            <td class="style1">
                &nbsp;
            </td>
            <td class="style1">
                &nbsp;
                <asp:Button ID="btnSourceConnect" runat="server" Text="Test Connection" 
                    onclick="btnSourceConnect_Click" />
            </td>
        </tr>
        </table>
4

2 に答える 2

1

Textbox から値を取得する最良の方法は何ですか?

最良の方法は、私が今書いているこのコントロールのようなものです。ポストバックを作成するボタンがあり、コードビハインドでテキストボックスの値を読み取ります-ポストバック。

使用するAutoPostBack="True"すべての TextBox で使用すると、サーバーへの不要なポストバックが多すぎます。「送信」ボタンを使用して、ユーザーが送信をクリックしたときにすべての値を保存することをお勧めします。

あなたの場合、ボタンがあり、自動ポストバックを削除して、次のように接続しようとしたときにのみ値を設定するだけで済みます。

protected void btnSourceConnect_Click(object sender, EventArgs e)
{
    SourceString.UserID = txtSourceUN.Text;
    SourceString.DataSource = txtSourceServer.Text;      
    SourceString.InitialCatalog = txtSourceDatabase.Text;
    SourceString.Password = txtSourcePass.Text;   

    if (Util.Connection(SourceString, 0))
    {
        lblTesting.Text = "Working!";
    }
    else
    {
        lblTesting.Text = "It No Work";
    }
}
于 2012-11-19T18:57:36.183 に答える
1

AutoPostback = true を TextBox に設定すると、テキストが変更されるたびにではなく、テキスト ボックスがフォーカスを失ったときにページがポストバックされます。

コードを見ると、この機能のほとんどはクライアント側で (つまり、javascript を使用して) 行われているはずです。

于 2012-11-19T18:59:18.260 に答える