Задать отображаемый текст в текстовом поле ввода HTML с помощью C # - PullRequest
3 голосов
/ 05 февраля 2012

У меня есть поле ввода HTML на моей странице ASPX, как показано ниже

<input id="txtID" runat="Server" type="text" />

Теперь у меня есть некоторый код, написанный на C # codebehind, который вычисляет значение, и я хочу, чтобы это значение отображалось в вышеуказанном TextBox.

Я уже пробовал

txtID.Value = Number.ToString();

и

HtmlGenericControl ct = new HtmlGenericControl();
ct.InnerHTML = Number.ToString();
txtID.Controls.Add(ct);

но оба вышеперечисленных слова не устанавливают текст для отображения текстового поля.

Может кто-нибудь помочь мне понять, как мне это сделать. Я не могу использовать

<asp:TextBox />

РЕДАКТИРОВАТЬ (С ПРАВИЛЬНЫМ ОТВЕТОМ): То, как я изначально пытался это сделать, было правильным, т. Е.

txtID.Value = Number.ToString();

Виновником был Placeholder Plugin, который вызывался и стирал значения из TextBox. Надеюсь, что это поможет многим таким людям, как я, которые застрянут в таких глупых местах.

Ответы [ 3 ]

3 голосов
/ 05 февраля 2012

Вы можете изменить значение элемента управления, вставив Javascript в PageLoad или PageInit. Просто скажите, GetValueDummy() метод ваш метод для расчета значения, и вы используете jQuery.

Вам необходимо вставить JavaScript на страницу в обработчике Page.Load.

protected void Page_Load(object sender, EventArgs e)
{
    var script = "$('#txt').val('" + GetValueDummy() + "');";
    ClientScript.RegisterStartupScript(typeof(string), "textvaluesetter", script, true);
}

В этом коде txt является идентификатором вашего ввода.

Если вы не используете jQuery, просто замените значение переменной скрипта на

var script = "document.getElementById('txt').value = '" + GetValueDummy() + "';";

Через некоторое время ваша страница будет полностью обработана и готова к отправке клиенту. Таким образом, вы не можете напрямую изменить его из C #. Подробнее о времени жизни страницы вы можете прочитать здесь: http://msdn.microsoft.com/en-us/library/ms178472.aspx

1 голос
/ 05 февраля 2012

Дайте это так:

<input type="text" name="email" id="MyInput" runat="server" />

Доступ к нему так:

string  MyInput= myTextBox.Value;

Извините за ответ выше:

Вот правка:

this.Init += Page_Init;
this.Load += Page_Load;
protected void Page_Init(object sender, System.EventArgs e)
{
        createControls();
    }

    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (IsPostBack)
        {
            setcontrolvalues();
        }
    }

    private void createControls()
    {
        TextBox txt1 = new TextBox();
        TextBox txt2 = new TextBox();
        txt1.ID = "txt1";
        txt1.EnableViewState = true;
        txt2.EnableViewState = true;
        txt2.ID = "txt2";
        PlaceHolder1.Controls.Add(txt1);
        PlaceHolder1.Controls.Add(txt2);
    }

    private void setcontrolvalues()
    {
        TextBox txt1 = null;
        TextBox txt2 = null;
        txt1 = (TextBox)(PlaceHolder1.FindControl("txt1"));
        txt1.Text = "text1";
        txt2 = (TextBox)(PlaceHolder1.FindControl("txt2"));
        txt2.Text = "text2";
0 голосов
/ 05 февраля 2012

Сделайте это:

<input type="text" ID="txtID" runat="server" />

msdn утверждает, что будет работать следующее:

<input 
    Type="Password|Text"
    EnableViewState="False|True"
    Id="string"
    Visible="False|True"
    OnDataBinding="OnDataBinding event handler"
    OnDisposed="OnDisposed event handler"
    OnInit="OnInit event handler"
    OnLoad="OnLoad event handler"
    OnPreRender="OnPreRender event handler"
    OnServerChange="OnServerChange event handler"
    OnUnload="OnUnload event handler"
    runat="server"
    />

, если это "не помогает", проблемаможет не быть с разметкой!

...