どのように私は、ASP.NETのGridView内のコントロールのクライアントIDを見つけるのですか?

StackOverflow https://stackoverflow.com/questions/1128746

質問

GridViewのASPが含まれています:TemplateField内のTextBox

私はASPを持っています。私はそれをJavaScriptで使用するIDです取得したいと思います。このような何かます:

<asp:TemplateField>
    <ItemTemplate>
        <asp:TextBox ID="textDateSent" runat="server" />
        <input type="button" value='Today' 
            onclick="setToday('<%# textDateSent.ClientID %>');" />
    </ItemTemplate>
</asp:TemplateField>

しかし、私は、コンパイル時に、私はエラーを取得します:

  

名「textDateSentは、」

現在のコンテキスト内に存在しません

誰でもこのテキストボックスのクライアントIDを取得する方法を知っていますか?

役に立ちましたか?

解決

これを試してください:

<asp:TemplateField>
    <ItemTemplate>
        <asp:TextBox ID="textDateSent" runat="server">
        </asp:TextBox>                      
       <input type="button" value='Today' onclick="setToday('<%# ((GridViewRow)Container).FindControl("textDateSent").ClientID %>');" /> 
    </ItemTemplate>
</asp:TemplateField>

他のヒント

たぶん、あなたは、あなたがたClientIDを必要な場所にそれを行うにはしたくありません。この記事をチェック<のhref = "http://blog.digitaltools.com/post/2009/07/14/How-to-Work-With-a-GridView-Row-in-JavaScript.aspx" のrel =」行のコントロールが汎用的な方法で参照されている場合noreferrer nofollowを ">ここします。

変更は<%# textDateSent.ClientID %>する<%= textDateSent.ClientID %>ます。

なんてこった、あなたはグリッドビューのOnDataBindingイベントを使用する必要があるかもしれません。次に、あなたのJavaScriptでリテラルコントロールを配置。次に、テキストボックスのクライアントIDを取得し、リテラルコントロールにそれを供給することができます。

protected void GridViewName_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //Create an instance of the datarow
            DataRowView rowData = (DataRowView)e.Row.DataItem;

            //locate your text box
            //locate your literal control
            //insert the clientID of the textbox into the literal control
        }
    }

偉大な詳細なチュートリアルについてはこちらをご覧くださいこのコンテキスト内で作業にを。

あなたはこのようにクライアントIDを取得することができます:

protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string strClientID = ((TextBox)e.Row.FindControl("txtName")).ClientID;
    }
}

これは、すべての行の各テキストボックスに一意のクライアントIDを提供します。

私はこれを行う...

var tbl = document.getElementById('<%=GridView.ClientID%>');
var checkBox = tbl.rows[i].cells[11].getElementsByTagName("input")[0].id;

セルは常に同じであるべきであり、それは入力にレンダリングされます。あなたは、そのセルでもっとして1つの入力を持っている場合は末尾に番号を変更する必要があります。これはあなたに新しいのclientid /入力オブジェクトのID(チェックボックスまたは何でも)を与える。

これは私がやったことです。 aspxページでは、私はちょうどjavascript関数にオブジェクト全体を渡されたので、私もクライアントIDにmeedませんでした。私の場合は、オブジェクトは、GridViewコントロールのEditItemTemplateでドロップダウンリストでした。私は、HTMLのOnChange ASPXコードで(この)イベントを追加します。

<asp:DropDownList ID="custReqRegionsDDL" runat="server" onchange='custReqRegionsDDLOnChange(this)'> </asp:DropDownList>

ここでは私のjavascriptのです。

function custReqRegionsDDLOnChange(myDDL)
    {
        alert('selected text=' + myDDL.options[myDDL.selectedIndex].text);

}

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top