Member 12949206 Ответов: 1

Как настроить виджет пользовательского интерфейса datepicker так, чтобы он отражал значение текста метки datagrid


У меня есть виджет datepicker в каждой строке gridview для столбца "дата". В столбце date есть как datepicker, так и "asp:label", текст которого представляет собой дату из базы данных. На данный момент datepicker показывает сегодняшнюю дату при нажатии на нее. Я бы хотел, чтобы datepicker отражал ту же дату, что и этикетка.

Вот html-код для столбца даты gridview:

<asp:TemplateField AccessibleHeaderText="Date" HeaderText="Date">
    <EditItemTemplate>
        <asp:TextBox ID="myText5" runat="server" Text='<%# Bind("Date") %>'></asp:TextBox>
    </EditItemTemplate>
    <HeaderTemplate>
        <h3 style="color:white">Date</h3>
        <asp:ImageButton runat="server" CommandName="Date" ImageUrl="~/Images/uparrow.png" OnCommand="Asc_Command" />
        <asp:ImageButton runat="server" CommandName="Date" ImageUrl="~/Images/downarrow.png" OnCommand="Desc_Command" />
    </HeaderTemplate>
    <ItemTemplate>

        <asp:Label ID="lblDate" runat="server" Text='<%# Bind("Date") %>' Width="83px"></asp:Label>
        <input type="hidden" id="datepicker"/>

    </ItemTemplate>
    <HeaderStyle BackColor="#10591B" />
</asp:TemplateField>


Вот JQuery для datepicker:
$(function() {
  $( "[id$=datepicker]" ).datepicker({
              showOn: "button",
  buttonImage: "/images/calendar2.png",
  buttonImageOnly: true,
  buttonText: "calender"
  });
  $("[id$=datepicker]").datepicker("setDate", Date.now() )
  });


Где он в настоящее время имеет "Date. now()" Я могу заменить и жестко закодировать дату без проблем, и это отлично работает. Однако мне нужно найти способ установить это из текста метки.

Что я уже пробовал:

Я попытался получить текст с этикетки следующим образом:
$(function() {
  $( "[id$=datepicker]" ).datepicker({
              showOn: "button",
  buttonImage: "/images/calendar2.png",
  buttonImageOnly: true,
  buttonText: "calender"
  });
  $("[id$=datepicker]").datepicker("setDate", document.getElementById("<%=((Label)gvHostTable.FindControl("lblDate")).ClientID%>").innerHTML)
  });


Это вызывает исключение нулевого объекта, я полагаю, потому что он пытается найти текстовые данные меток до того, как произойдет привязка данных для метки. Я очень новичок в использовании JQuery, так что прошу прощения, если это рудиментарный материал, который должен знать любой дурак.

j snooze

Я думаю,вы хотите установить datepicker на идентификатор метки. Он цепляется за текстовое поле или, в вашем случае, за метку. Поэтому установите метку как datepicker (или текстовое поле). Тогда он должен по умолчанию использовать все, что в нем есть. Вам не нужно использовать его по умолчанию в javascript.
Поэтому я думаю, что вы хотите что-то вроде $( "[id$=lblDate]" ).datepicker....

Member 12949206

Спасибо, что нашли время. Я попытался сделать так, как вы предлагаете, но потом датипикер исчезает со стола.

j snooze

вероятно, потому, что это метка, а не редактируемое текстовое поле. в этом случае идите другим путем и установите значение вашего скрытого поля (которое, по-видимому, является тем, на что указывает ваш datepicker) на дату вашей метки.

Member 12949206

Как установить значение скрытого поля? Извини за медлительность.

j snooze

вы, вероятно, могли бы просто использовать asp:hiddenfield и связать это нет?

Member 12949206

Пожалуйста, не могли бы вы опубликовать пример того, как это сделать - я, кажется, не могу привязаться к данным из asp:hiddenfield или из Thanks again :D

j snooze

Ваш пост показывает это
& lt;itemtemplate>

&ЛТ;АСП:метка идентификатор="lblDate" атрибут runat="сервер" текст=в'<%# Персонализация("дата") %&ГТ;' ширина="83px"&ГТ;


< / ItemTemplate

так что попробуйте это

<itemtemplate>

                            <asp:Label ID="lblDate" runat="server" Text='<%# Bind("Date") %>' Width="83px">
                            <asp:HiddenField runat="server" id="datepicker" value='<%# Bind("Date") %>'/> 
    
                        </ItemTemplate

j snooze

Я должен отметить, что иногда asp.net делает разные вещи с идентификаторами, поэтому, если ничего не отображается, проверьте фактический исходный HTML-вывод вашей страницы, чтобы увидеть, как он называет скрытые поля datepicker, и соответствующим образом измените селектор jquery.

Member 12949206

попробовал именно это, и я получаю ошибку синтаксического анализа.
Во время синтаксического анализа ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, ознакомьтесь со следующими конкретными деталями ошибки синтаксического анализа и соответствующим образом измените исходный файл. Сообщение об ошибке парсера: тег сервера не очень хорошо сформирован.

Все работает нормально, пока я не добавлю значение= " <%# Bind ("Date") % & gt; part

j snooze

ладно,я просто писал о коде. На самом деле не попробовать его.
Убедитесь, что у вас есть соответствующие закрывающие теги. Я вижу, что сообщение было немного "очищено" проектом кода. ...хорошо, я не могу опубликовать закрывающие теги без того, чтобы codeproject не удалил их. посмотрите ваш образец выше и убедитесь, что присутствуют соответствующие закрывающие теги. чем меньше/больше знаков с косой чертой и контрольным типом.

Member 12949206

А! Да, конечно-пропустил заключительный тег. Теперь он работает, но datpicker не появляется. Как я могу проверить вывод html-источника, чтобы увидеть имена скрытых полей?

Karthik_Mahalingam

это исправлено?

Member 12949206

Боюсь, что нет! Когда я пробую предложенные методы, datepicker исчезает из столбца. Я попытался отладить страницу, и похоже, что идентификаторы не были изменены. Я бы с удовольствием решил эту проблему.

Karthik_Mahalingam

скажите, правильно ли я поняла, обряд,
в обычном режиме метка будет иметь значение даты
в режиме редактирования будет отображаться текстовое поле со значением даты, и если вы нажмете на него, то появится средство выбора даты для выбора даты.
после выбора даты вам нужно обновить дату в скрытом поле

кстати, зачем вам нужно скрытое поле?
и какой формат даты вы использовали.

Member 12949206

Я хочу, чтобы datepicker отображал даты, которые в данный момент привязываются и отображаются в ASP:label в виде текста. На данный момент и связанные данные, и datepicker видны в одном столбце, но datepicker показывает только сегодняшнюю дату. Для начала datepicker можно использовать только для чтения и просто показывать даты из связанного источника данных. Я пробовал использовать ASP: textbox, ASP:label и asp:hiddenfield, но безуспешно. Связанные данные без проблем отображаются в столбце в виде текста. спасибо за помощь

Karthik_Mahalingam

что это за формат?

Member 12949206

Извините за задержку. Формат - "дата" (гггг/ММ/ДД) из SQLMS. Возможно ли, что неправильный формат приведет к тому, что выбор даты не будет отображаться, но и не выдаст какую-то ошибку?

Karthik_Mahalingam

вы должны настроить в datepicker

Member 12949206

форматировать связанные данные в датапикере?

Karthik_Mahalingam

я имею в виду в jQuery datepicker options

Member 12949206

не могли бы вы опубликовать пример? Спасибо за помощь Karthik :D

Karthik_Mahalingam

проверить это Форматы Datepicker / jQuery UI[^]

Member 12949206

Извините, я думаю, вы не поняли. Я не хочу, чтобы datepicker форматировал текст. Я хочу, чтобы datepicker показывал дату в тексте. Я получаю этот текст из списка, и когда я нажимаю на datepicker в каждой строке сетки, я хочу, чтобы он открывался, показывая ту же выбранную дату, что и в тексте из связанных данных.

Karthik_Mahalingam

я имею в виду, что если вы определите формат, он автоматически установит дату, которая доступна в тексте, к которому привязан datepickcer

Member 12949206

если я жестко закодирую дату с помощью метода datepicker "set date", она откроется, показывая эту дату правильно. Как я могу заменить жестко закодированную дату датой из связанного источника данных?

Karthik_Mahalingam

можете ли вы опубликовать скриншот своей сетки / datepicker или любой другой релевантный

Member 12949206

ах! Кажется, нет возможности опубликовать скриншот

Karthik_Mahalingam

используйте любой бесплатный сайт для размещения изображений, разместите изображение и поделитесь ссылкой
imgur.com

Member 12949206

http://imgur.com/a/QAGnX

Karthik_Mahalingam

datepicker виден/доступен даже в режиме без редактирования ?
на картинке показано вот так

Member 12949206

Когда я загружаю страницу, datepicker не отображается. Он появляется только после того, как я нажимаю на значок календаря

Member 12949206

http://imgur.com/a/O8UEL

Karthik_Mahalingam

хорошо, я получил вашу проблему, я создам образец кода и опубликую его завтра, сейчас я чувствую сонливость.

Member 12949206

Большое вам спасибо! Очень ценю, что вы нашли время помочь-немного отдохнуть.

Karthik_Mahalingam

:)

Member 12949206

Я не совсем понимаю, что ты имеешь в виду. Когда я нажимаю на значок календаря, он открывает dtepicker, показывающий сегодняшнюю дату. Я бы хотел, чтобы он показывал дату, найденную в тексте столбца

1 Ответов

Рейтинг:
2

Member 12949206

Ладно, наконец-то разобрались - большое спасибо всем, кто предложил помощь :D

Ключом к этой загадке был формат связанных данных.

Он должен быть в формате TE MM/dd / yyyy.

<input type="hidden" id="datepicker" value='<%# Convert.ToDateTime(Eval("Date")).ToString("MM/dd/yyyy") %>'/>


При правильном формате оставалось только использовать функцию "setDate" и указать на значение hiddenfields.

$("[id$=datepicker]").datepicker("setDate", $("#datepicker"))


Теперь все тип-топ! :Д


Karthik_Mahalingam

крутой :)