0

私はグリッドビューに正しくバインドされたJQuery Datepickerを持っています(私はそう感じます)。正常に機能し、グリッドのすべてのテキスト ボックスと各行に完全に表示されます。

問題は、最初の行にのみ値を出力することです。

したがって、グリッドの 10 行目をクリックすると、DatePicker が 10 行目に表示されますが、日付を選択すると、その日付はグリッドの最初の行にのみ入力されます。

どの行を選択しても、常に最初の行にのみ値が出力されます。

どんな助けでも大歓迎です。

テキストボックス ID とクラス名の両方を使用して DatePicker を接続しようとしましたが、うまくいきませんでした。

ありがとうございます

    $("#txtGivenDate").datepicker({ dateFormat: "dd/mm/yy", max: '0', changeYear: true,         changeMonth: true });

グリッドのマークアップは次のとおりです。

    <asp:TemplateField HeaderText="Given Date" ControlStyle-Width="90%" HeaderStyle-Width="9%">
                <ItemTemplate>
                    <asp:TextBox ID="txtGivenDate" runat="server" Text='<%#Bind("GivenDate")%>' BorderStyle="None"
                        CssClass="youpi"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>

考えられるすべての解決策を試しました

  1. ID の代わりにクラス名を使用する
  2. ID を使用してテキストボックスの名前を識別する
  3. テキストボックス宣言で ClientIDMode=Static を使用する
  4. グリッドビューの RowCreated イベントでコード ビハインドから JS をアタッチします。

どれも機能していないようでした。

ありがとうございます

4

2 に答える 2

0

答えがわかったと思います。

ClientIDMode に問題がありました。

テキストボックスの ClientIDMode を「AutoID」に設定する必要があります。

これを設定するとうまくいき、問題は解決しました。

みんな、ありがとう。

于 2013-01-24T14:34:08.393 に答える
0

$('#'+yourControl.ClientID).datepicker(...);GridView のイベントで初期化子を StringBuilder に追加し、RowDataBoundすべての行がデータ バインドされた後、グリッドのDataBoundイベントで StringBuilder をスタートアップ スクリプトとして登録することをお勧めします。

編集:クラス名を使用することもできます。例えば:$('.youpi').datepicker();

于 2013-01-23T08:10:49.273 に答える