-1

これは私のjavascriptです

  function btnEditClick() {
    alert(document.getElementById('<%=LblRefPhyID.ClientID %>').value);          
  }


<asp:Repeater ID="repeaterRefPhysicianList" runat="server">
  <ItemTemplate>
    <tr onclick="selectRow(this);">
      <td class="csstablelisttd" style="display: none;">
        <asp:Label ID="LblRefPhyID" runat="server" Text='<%#Eval("Ref_Phy_ID")%>'></asp:Label>  
      </td>

[編集] ボタンの clientclick で、RefphyId を別のページに渡す必要があります。

4

4 に答える 4

1

リピーターです。これは、データバインドされたコレクション内のアイテムごとItemTemplateにが繰り返されることを意味します。

これには注意が必要です。IDは一意であると想定されています。asp:Labelしたがって、IDがであると言うとLblRefPhyID、ASP.NETは自動的にリピーターのインスタンスごとに一意のIDを生成し、最終的には生成されたHTMLに到達します。これらの生成されたIDは、元の値に基づいていますが、正確にはそうではないため、リピーターの外部LblRefPhyIDのプレーンは機能しません。document.getElementById()

これを回避する方法はたくさんあります。最初のステップは、自動生成されたIDを考慮に入れたコードを実際に作成することです。たぶん、を使用してIDをキャッシュするJavascriptを記述しLblRefPhyID.ClientID、動的onclickに実行します。

編集

そして、そうそう、@ Pointyは、label要素には値がなく、内部のHTMLだけであると述べているのは完全に正しいです。彼が正しい返答をしたことで反対票を投じた理由がわかりません。

于 2012-04-16T12:23:29.183 に答える
1

id の代わりに css クラスを設定し、要素のクリック イベントをクラス名でバインドしてみてください。私はこれにjqueryを使用しています:

$(document).ready(function(){
  //bind click event on our label class
  $('.lblRef').live('click', function(){
    alert($(this).text());
   });
});

そして、これはasp.netページコードで:

<asp:Label CssClass="lblRef" runat="server" Text='<%#Eval("Ref_Phy_ID")%>'></asp:Label>
于 2012-04-17T14:13:55.543 に答える
0

HTML<label>要素には「値」がありません。それらには内容があります:

alert(document.getElementById('<%=LblRefPhyID.ClientID %>').innerHTML);
于 2012-04-16T11:41:42.920 に答える
0

最善の方法は、クライアント側のリピーターによって生成された ID のパターンを確認し、その ID を使用して、innerHTML を使用してラベルの値を取得することです。たとえば、あなたの場合、生成されたIDは次のようになります repeaterRefPhysicianList_LblRefPhyID_01。ソース内の行数まで。

したがって、この情報をinnerHTMLで使用して、ラベルの値を取得できます..全体として、HTMLページを確認するだけで、次に何をすべきかがわかります:)

于 2012-04-16T12:35:35.557 に答える