开发者

UpdatePanel reset textbox background color

I have an UpdatePanel within it a textbox with a background color of yellow and a trigger for text-changed for the textbox and everything works fine except that the background color reverts to white when I write some text in the text box and then focus somewhere else.

What is causing this? Thanks.

Using asp.net 4.0

Here is the asp.net markup:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <span>
         开发者_C百科   <asp:TextBox ID="sticky" runat="server" AutoPostBack="true" 
                 Text='<%# Bind("sticky") %>' TextMode="MultiLine" 
                 OnTextChanged="cSticky" />
        </span>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="sticky" EventName="TextChanged" />
    </Triggers>
</asp:UpdatePanel>

Here is the css:

#StickyDiv textarea
{
height:170px;
width:185px;
resize:none;
margin-top:1px;
border:none;
font-family:Comic Sans MS;
font-size:1.2em;
padding:3px;
line-height:1.1em;
} 

And here is the jQuery:

$(function () {
    $("#StickyDiv textarea:even").css("background-color","#ffff95");
    $("#StickyDiv textarea:odd").css("background-color", "#fe8ab9");
});


Your problem is that when you do a update in the ajax panel your jquery is not called. If the text is changed you update the box to yellow and not call the javascript because it is rendered outside of your panel. To fix this you can register the script in you codebehide like:

ScriptManager.RegisterClientScriptBlock(Page,typeof(string),"JavaScriptCall",script.ToString(), false);


I did in the folowing example

in ASPX file

<asp:ScriptManager ID="ScriptManager1" runat="server">
   </asp:ScriptManager>
   <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:TextBox ID="TextBox1" runat="server" BackColor="Yellow" AutoPostBack="true" OnTextChanged="textChanged"></asp:TextBox>
                <br />
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>

In Codebehind File

protected void textChanged(object sender, EventArgs e)
    {
        TextBox1.BackColor = System.Drawing.Color.Yellow;
        Label1.Text = TextBox1.Text;
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜