在page_load里面写上    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
           
            if (!IsPostBack)
            {
                this.DriveTypeID = UtilTool.ToSafeInt32(Request.Params["ID"]);
                this.BindDriveShow(1);
                //this.BindDrive1Type();
                //this.BindDrive2Type();
            }
        }
        catch(Exception ex)
        {
            this.lblMessage.Text = ex.Message;
        }
    }这样试试

解决方案 »

  1.   

    如果改变状态后,没提交到服务器,就刷新了,这样当然是不能还原的,如果提交过后,就会保存在ViewState里的,这样你就可以记取出来再设置了
      

  2.   

    我没有看你写的“现在的问题:”那一行以下的内容。web控件本来就是自己保持Style状态的,你说它不能保存Style是没有道理的。
    例如:        <asp:Image ID="Image1" runat="server" ImageUrl="http://www.google.com/images/google_sm.gif" />
            <br />
            <asp:Button ID="Button1" runat="server" Text="改变Visible属性" OnClick="Button1_Click" />
            <br />
            <asp:Button ID="Button2" runat="server" Text="改变display样式" OnClick="Button2_Click" /><br />
            <asp:Button ID="Button3" runat="server" Text="什么也不做" />
    protected void Button1_Click(object sender, EventArgs e)
    {
        this.Image1.Visible = !this.Image1.Visible;
    }protected void Button2_Click(object sender, EventArgs e)
    {
        this.Image1.Style["display"] =
            this.Image1.Style["display"] == "none" ? "inline" : "none";
    }protected void Page_Load(object sender, EventArgs e)
    {
        this.SmartNavigation = true;
    }执行之后可以看到,控件在被动刷新的时候,其display样式总是服务器端正确设置的。除非你有在问题中没有说过的操作需求,否则根本用不着为display保持刷新前的状态担心。
      

  3.   

    蝶恋花雨,
    你的DriveTypeID 是什么?看不懂
      

  4.   


    "情色暴力漠视人命与戏说中国这样的大导演恶心)"
    我的图标的动态加载的,每次刷新都加载一遍(放在repeater控件里),当然ID还是一样的.
      

  5.   

    我的图标的动态加载的,每次刷新都加载一遍(放在repeater控件里),当然ID还是一样的.
    ——————————————————————————————————————————
    动态加载是完全一样的。我把例子改了一下:        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
            <br />
            <asp:Button ID="Button1" runat="server" Text="改变Visible属性" OnClick="Button1_Click" />
            <br />
            <asp:Button ID="Button2" runat="server" Text="改变display样式" OnClick="Button2_Click" />
            <br />
            <asp:Button ID="Button3" runat="server" Text="什么也不做" />
    Image img;protected void Button1_Click(object sender, EventArgs e)
    {
        img.Visible = !img.Visible;
    }protected void Button2_Click(object sender, EventArgs e)
    {
        img.Style["display"] = img.Style["display"] == "none" ? "inline" : "none";
    }protected void Page_Load(object sender, EventArgs e)
    {
        this.SmartNavigation = true;
        img = new Image();
        img.ID = "myImg";
        this.PlaceHolder1.Controls.Add(img);
        img.ImageUrl = "http://www.google.com/images/google_sm.gif";
    }与静态是一样的,只要img的UniqueID一样就没有问题。大概你的Repeater或者更高层的某个控件ID没有设置。你设置ID一样是不足够的,如果Repeater等的UniqueID不一样,那么图像的UniqueID也会不一样。
      

  6.   

    哎..我的问题举的例子的不是很好.
    其实是这样的,把问题说白了就是,能不能记住前台控件的状态:
    我的img不是runat=server的,有没有办法让它在刷新后还是原来的状态..
      

  7.   

    因为不是我不想要把img设为runat=server,而是因为条件不允许!
    因为img是动态加载的,它的ID是:<img id=<%DataBinder.Eval(Container.DataItem,"")%>>
    ,这样vs2005的编译器不允许它是runat=server的,前面已经说了.在VS2005中,runat="server"控件的id只允许是简单的常量,这样当在上述的img标签里添加了runat="server"以后,连编译都通不过了
      

  8.   

    可是你说的“以往的做法”可是说runat=server的。至于使用javascript而不使用asp.net编程,我就不回答了。很显然,如果图像不是runat=server的,那么你应该完全从javascript、并且完全从客户端浏览器的角度去编程,与asp.net无关。
      

  9.   

    哎..那看来是没办法了?
    刚才公司开会了,实在没办法就用ajax提交,返回错误了,这样就不用担心保存原来控件的状态了..
      

  10.   

    cookie啊,你这些信息应该在cookie中保存,这样就可以在刷新后使用了。
      

  11.   

    是啊..cookie是个不错的注意,我怎么没想到呢...
    但是这种方法老板肯定不会答应的
    0.0..
    看来我原来的要求是在页面上做不到的了..
    揭帖!