Изменение метки ASP.Net в C # - PullRequest
1 голос
/ 04 августа 2011

Я обычно имею дело с кодом на c #, но недавно я разрабатывал страницу asp.net, у меня появляется Календарь, и пользователь выбирает желаемую дату. На этой странице есть asp lbl, на котором я хотел бы отобразить текущую выбранную дату, что, как правило, легко для меня, но у меня возникают проблемы со ссылкой / поиском элемента управления. Кроме того, я не уверен в том, как лучше всего добиться этого, и я уверен, что столкнусь с этой проблемой в будущем.

Здесь я хотел бы установить текст lbl и попытаться использовать метод FindControl, но он не работает для меня, думая, что он может быть вложенным, так как у меня есть некоторые элементы div. *

 public void Calendar1_SelectionChanged(object sender, System.EventArgs e)
    {

        Control Lbl = FindControl("inputField");
        if (Lbl != null)
        {
            //Control mycontrol2 = Lbl.Parent;
            Lbl.Text = Calendar1.SelectedDate.ToShortDateString();
        }   

и это в асп.

  <div id="date">


         <input type="text" size="12" id="inputField"   />
        <script>
            $("#inputField").click(function () {
                $("#box").show("slow");
            });
</script>
    </div>

Как мне установить текст поля ввода в Calendar.SelectedDate? (и любые советы, которые вы натолкнули на себя, если таковые имеются, для хорошей практики)

Спасибо за любую помощь.

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

Любая причина, почему вы не используете ярлык asp:? Вы не можете найти «метку», потому что это элемент управления html, он же элемент управления на стороне клиента. Используйте <asp:Label id="lblCal" runat="server"..., и у вас не должно возникнуть проблем с изменением его текста в коде:

lblCal.Text = Calendar1.SelectedDate.ToShortDateString();
2 голосов
/ 04 августа 2011

Asp.Net рассматривает только серверные теги в качестве элементов управления, доступных на уровне C #.

Все эти DIV и другие теги являются простым текстом для Asp.Net, они не будут рассматриваться в иерархии элементов управления.

Чтобы Asp.Net учитывал это на сервере, поместите атрибут runat="server" на интересующие вас теги.Они станут доступны в коде позади по имени, указанному в атрибуте id.

Asp.Net никогда не сможет найти 'inputField' в вашем примере кода.

Решение:

Для решения вашей проблемы я рекомендую использовать элемент управления Asp.Net WebForm с именем TextBox ..., если вы хотите input:

<asp:TextBox runat="server" id="inputField" />

Сделав это, вы сможете получить доступ к inputField в коде позади по имени:

inputField.Text = Calendar1.SelectedDate.ToShortDateString();
...