Вот что я вижу, когда я делаю e.Item.FindControl для TextBox. Я пытаюсь получить значение для
. У меня есть 2 ввода даты в виде списка.и я пытаюсь получить их значения, но всегда получаю пустую строку.
Если я установлю значение во внешнем интерфейсе, то оно дойдет до кода, но если я отредактирую поле, будет возвращено исходное значение.
Я могу получить значения и элементы управления без проблем.
Я пытался использовать asp: TextBox и html
<asp:TextBox ID="editArrivalFrom" name="editArrivalFrom" TextMode="Date" runat="server" OnTextChanged="editArrivalFrom_TextChanged"></asp:TextBox>
<input type="date" id="editArrivalTo" name="editArrivalTo" runat="server" />
var arrivalFrom = (TextBox) e.Item.FindControl("editArrivalFrom");
if (!String.IsNullOrWhiteSpace(arrivalFrom.Text))
var arrivalTo = (HtmlInputGenericControl) e.Item.FindControl("editArrivalTo");
if (!String.IsNullOrWhiteSpace(arrivalTo.Value))
Я также пыталсяиспользуя Request.Form, все нижеприведенное возвращает null:
var test = Request.Form[arrivalFrom.UniqueID];
var test2 = Request.Form[arrivalFrom.ClientID];
var test3 = Request.Form["editArrivalFrom"];
Также нет признаков входа в Request.Form.AllKeys
Элемент управления asp не отображаетсяв файле designer.cs и добавление его только приводит к тому, что оно все равно равно нулю.
Буду признателен за любые предложения. Я тяну свои волосы часами.
Соответствующий код дляФорма обновления ниже.Обратите внимание, что все это содержится в панели обновлений
<asp:ListView ID="MarkupRuleList" runat="server"
OnItemCommand="MarkupRuleList_OnItemCommand">
<EditItemTemplate>
<asp:LinkButton ID="btnUpdate" CssClass="lstview_record_bttn button-spacing-7" Text="Update" CommandName="Update" CommandArgument='<%# Eval("Id") %>' runat="server" />
</EditItemTemplate
protected void MarkupRuleList_OnItemCommand(object sender, ListViewCommandEventArgs e)
{
int markupId = 0;
int.TryParse(e.CommandArgument.ToString(), out markupId);
var markup = new MarkupRuleDTO();
switch (e.CommandName)
{
case "Update":
// GetMarkupRuleFromPage contains all of the code from the top of this post
markup = GetMarkupRuleFromPage(e, markupId);
break;
}
}
Редактировать: Решается путем отключения ввода даты и использования обычного текстового поля, а затем выполняет следующую функцию JS onkeyup
function dateInputHandler(item, event) {
// key code 8 == backspace
if (event.keyCode != 8) {
// insert forward slashes after days and months
if (item.value.length == 2 || item.value.length == 5) {
item.value = item.value + '/'
}
// remove double slashes and prevent length exceeding 10 characters
// format should be dd/mm/yyyy
if (item.value.endsWith("//") || item.value.length > 10) {
item.value = item.value.slice(0, -1);
}
}
}