2

初心者の質問を許してください。しかし、私はこれに頭を悩ませようとしています。いくつかの情報を送信するために使用されるリストビューの中にあるいくつかのコントロールがあります。これを行うためにここでテスト パターンを実行していますが、オブジェクト未定義エラーが発生します。これについて私が見た記事はすべて、漠然としたものです。この例では、テキスト ボックスの ID を渡してから、JavaScript で値を取得しようとしています。私が間違っていることを教えてもらえますか?

<form id="form1" runat="server">
        <asp:ScriptManager runat="server" />
        <script type="text/javascript">
            function ClientIDS(id) {
                var info = document.getElementById(id).value;
                alert(info);
                return false;
            }
        </script>
        <asp:ListView runat="server" ID="lsvTest">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="txtTextBox" />
                <asp:Button runat="server" ID="btnSubmit" Text='<%#Eval("Name") %>' OnClientClick="ClientIDS('<%=txtTextBox.ClientID %>')" />
            </ItemTemplate>
        </asp:ListView>

    </form>

ありがとう

4

5 に答える 5

6

jqueryこれを試してみるよりも使いたい場合

ボタンonclientclickをこれに置き換えるだけです

   OnClientClick="ClientIDS(this);"

input textそしてあなたの前を見つけるよりもasp:listview

function ClientIDS(obj) {

   var txt = $(obj).prevAll('input[id*="txtTextBox"]:first');
   alert($(txt).val());

   return false;
}
于 2012-03-21T17:52:33.283 に答える
1

サーバー コントロールのプロパティにインライン コードを含めることはできません。

通常、コードファイルでこれを行います。

    for (int j = 0; j < this.lsvTest.Items.Count; j++)
    {
        var btnSubmit = (Button)this.lsvTest.Items[j].FindControl("btnSubmit");
        var txtTextBox = (TextBox)this.lsvTest.Items[j].FindControl("txtTextBox");
        btnSubmit.Attributes["onclick"] = string.Format("ClientIDS('{0}')", txtTextBox.ClientID);
    }
于 2012-03-21T16:29:17.747 に答える
1

Java スクリプト コード

<script type="text/javascript">
    function ClientIDS(Btnid) {
        var textBoxID = Btnid.id.replace('btnSubmit', 'txtTextBox');
        var info = document.getElementById(textBoxID).value;
        alert(info);
        return false;
    }
</script>

HTML コード

<asp:ListView runat="server" ID="lsvTest">
    <ItemTemplate>
        <asp:TextBox runat="server" ID="txtTextBox" />
        <asp:Button runat="server" ID="btnSubmit" Text='<%#Eval("Name") %>' OnClientClick="ClientIDS(this)" />
    </ItemTemplate>
</asp:ListView>
于 2012-03-21T16:48:38.550 に答える
0

リピーターのItemDataBoundイベントを使用して、これを行うことができます。次のコードを参照してください

protected void lsvTest_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    string txtbox = e.Item.FindControl("txtTextBox").ClientID;
    Button btn = e.Item.FindControl("btnSubmit") as Button;
    btn.OnClientClick = string.Format("ClientIDS('{0}')", txtbox);
}
于 2012-03-21T16:55:34.113 に答える
0

まず第一に、jQueryライブラリがすべきことをするためにjavascriptを使用しています。

例えば:

var info = document.getElementById(id).value;
//  is easier as
var info = $("#"+id).val();

第二に、しばらく経ちましたが、ASPスクリプトのテキストをそのような形式に入れることはできないと思います

于 2012-03-21T16:30:10.350 に答える