0
  • ASP.NET 4
  • Jクエリ1.7.1
  • ブラウザ:IE9

やあ

UpdatePanel 内の gridview コントロールで jquery を使用しているため、gridview Jquery の行をクリックするたびに HiddenField コントロールの値が編集されるため、「選択したインデックス」が必要な場合は、HiddenField の値を使用するだけです。Chrome と Firefox ではすべて正常に動作しますが、IE9 では動作しません。行をクリックしてそのインデックスを HiddenField に割り当てた後、ボタンをクリックしてサーバー側イベントを起動すると、HiddenField の値を取得すると、デフォルト値 (マークアップで定義された値) が取得されます。一つ変えました。そして、奇妙なことに、and alert(HiddenField.value) を使用すると、行インデックスが表示されます。そのため、問題はサーバー側の機能でのみ発生し、ポストバック後も HiddenField 値が保持されますが、サーバー側では常にデフォルトとして...

これは私のJqueryコードです:

$('[id$=divtxtIdPresentacion]').click(function () {

             var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");

             var index = $(this).attr("commandargument");             

             if (tex != index) {

                 $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value", index);
             }

         });

ボタンイベントの一部:

 protected void gridPresentacionAgregar_SelectedIndexChanged(object sender, EventArgs e)
    {       

         int index = int.Parse(HFSeleccionIndexRow.Value);
         ...
     }

そして HiddenField (念のため):

<asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />
4

4 に答える 4

1

非表示の入力フィールドが更新パネル コントロール内にありません。サーバーへの非同期ラウンド トリップでは、UpdatePanelそれ自体に含まれるコントロールのみが UI で更新されます。そのため、コード ビハインドが実行されて隠しフィールドが更新されても、フロント エンドではそれらはパネルの外側にあるため同じままです。

<ContentTemplate>タグ内の隠しフィールドを移動してみてください。

<asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always">
    <ContentTemplate>
        <asp:HiddenField runat="server" ID="HFSeleccionIndexRow" value="0" />
        .....
    </ContentTemplate>
</asp:UpdatePanel>
于 2012-12-07T14:05:02.613 に答える
1

選択したインデックスの変更に jQuery コードを使用する必要はありません。更新パネルを使用したため、サーバー トリップはユーザーに表示されません。

コマンド引数、コマンド名、ファイアーサーバーサイドクリックを使うのがベターです。

于 2012-12-07T13:40:38.253 に答える
0

次のように値を設定してみてください。

    $('[id$=divtxtIdPresentacion]').click(function () {

         var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");

         var index = $(this).attr("commandargument");             

         if (tex != index) {
           $('#<%=HFSeleccionIndexRow.ClientID%>').val(index);
         }
     });
于 2012-12-07T13:26:53.487 に答える
0

代わりにこのjquery関数を使用してみてください

$('[id$=divtxtIdPresentacion]').click(function () {
    var tex = $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value");
    var index = $(this).attr("commandargument");             
    if (tex != index) {
        if($.browser.msie){
             $("#<%=HFSeleccionIndexRow.ClientID%>").prop("defaultValue", index);
        }
        else{
             $('#<%=HFSeleccionIndexRow.ClientID%>').attr("Value", index);
        }
    }
});
于 2012-12-07T13:41:59.547 に答える