3

I have a HTML input box in my ASPX page like below

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

Now I have some code written in C# codebehind which calculate a value and I want that value to be displayed in the above TextBox.

I have already tried

txtID.Value = Number.ToString();

and

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

but both of the above does not seems to set the display text of the textbox.

Can anyone help me figure out as to how do I get it done. I cannot use

<asp:TextBox />

EDIT (WITH CORRECT ANSWER): The way I was originally trying to do was correct i.e.

txtID.Value = Number.ToString();

The culprit was Placeholder Plugin which was getting called and was erasing the values from the TextBox. Hope this will help a lot of people like me who get stuck at such silly places.

4

3 回答 3

3

您可以通过在 PageLoad 或 PageInit 上注入 Javascript 来更改控件的值。只需说GetValueDummy()方法是您计算值的方法,并且您正在使用 jQuery。

您需要在 Page.Load 处理程序中注入 javascript 到页面。

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

在此代码中,txt 是您输入的 id。

如果您不使用 jQuery,只需将脚本变量的值替换为

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

在某个时间点之后,您的页面将完全呈现并准备好发送给客户端。所以你不能直接从c#修改它。您可以在此处阅读有关页面生命周期的更多信息:http: //msdn.microsoft.com/en-us/library/ms178472.aspx

于 2012-02-05T10:18:02.417 回答
1

像这样给它:

<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";
于 2012-02-05T09:25:30.390 回答
0

做这个:

<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"
    />

如果它“没有帮助”,问题可能不在于标记!

于 2012-02-05T09:20:25.597 回答