0

我有一个 JQuery Datepicker 正确绑定(我觉得如此)到 gridview。它工作正常,并在网格的所有文本框和每一行上完美显示。

问题是它只将值输出到第一行。

因此,当我单击网格的第 10 行时,会在第 10 行弹出一个 DatePicker,但是当我选择一个日期时,该日期仅填充在网格的第一行中。

无论我选择哪一行,它总是只将值输出到第一行。

任何帮助将不胜感激。

我试图通过文本框 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. 将 JS 从后面的代码附加到 gridview 的 RowCreated 事件上。

似乎没有一个工作。

谢谢阿舒托什

4

2 回答 2

0

我建议您将$('#'+yourControl.ClientID).datepicker(...);初始化程序附加到 GridViewRowDataBound事件中的 StringBuilder,然后在网格事件中将所有行都绑定数据后将 StringBuilder 注册为启动脚本DataBound

编辑:您也可以尝试使用类名。例如:$('.youpi').datepicker();

于 2013-01-23T08:10:49.273 回答
0

我想我找到了答案。

问题出在 ClientIDMode 上。

我们需要将文本框的 ClientIDMode 设置为“AutoID”。

设置这个效果很好,问题得到了解决。

谢谢大家。

于 2013-01-24T14:34:08.393 回答