我现在有一个下拉列表框。<select id="city005" runat="server">服务器控件,通过URL里的地址栏里的参数,默认选择当前的选项,并且,想在有参数的情况下,让控件不能再次被选择。
我使用 city005.Disabled = true;以后。
它的值丢失了就。
使用.Visible设置为FLASE以后,值也不见了。
有什么好办法能设置控件为不能选择并且值又不丢失呢?
我的ASP2。0的。在1。0的情况下不会出现这类情况。

解决方案 »

  1.   

    Visible设置为FLASE???
    代码贴出来
      

  2.   

    city005.Disabled = true值就丢失了。
    =====>
    怎么会丢失呢?使用.Visible设置为FLASE以后,值也不见了。
    =====>
    值不是不见了,而是控件隐藏了。因为Visible=false,不可见了试试这样:
    在Page_Load事件里,根据URL参数的有无。如果有,则选中select中的某项,然后将select的Disbale设置为false。这样控件不能再次被选择
      

  3.   

    通过URL里的地址栏里的参数,默认选择当前的选项,并且,想在有参数的情况下,让控件不能再次被选择。================俺理解力太低,看不懂 ....
      

  4.   

    现在问题已经解决,像这类情况我想其他人也许也会用到。
    .net2.0里面,textbox和SELECT同样因为安全问题而把隐藏和,DISEABLE掉的控件丢失值。
     
    情况如下:
    htp://localhost/get.aspx?city=000123
    SELECT通过。CITY=000123知道目前是,杭州市,所以就默认选择杭州。并且不能再被修改。
    如果传过来的是。
    http://locahost/get.aspx那select还是可以选择。
    我想到的一个办法是。
    先判断CITY参数。如果是,select里的一项的话,先把
    value和TEXT两个值都传个变量aa,bb
    然后把select通过。items.clear();清楚完。
    然后再通过
    select.add("ddd");
    增加一条item这里随便
    然后
    select.items[0].value=aa;
    select.items[0].text=bb;
    这样目前就只有参数传过来的那个选项了。
      

  5.   

    问题解决,顺便问个其他问题,然后结帖。
    onclick="openVoteResult('http://locahost/GetResult040.aspx?topicID=2004',800,600)"
    如果我想在http://locahost/GetResult040.aspx?topicID=2004后面加一个参数。
    http://locahost/GetResult040.aspx?topicID=2004&city=(这里是一个控件的值)
    假设控件为textbox.text.tostring()这整句应该如何写?http://locahost/GetResult040.aspx?topicID=2004&city=<%#textbox.text.tostring()%>
    上面这样写对吗?
      

  6.   

    看不出来,为何需要如此繁琐的处理 ....// maybe ->        string cityId = Request.QueryString["city"];
            ListItem item = Select1.Items.FindByValue(cityId);
            Select1.Disabled = (item != null);
      

  7.   

    >>>string cityId = Request.QueryString["city"];
            ListItem item = Select1.Items.FindByValue(cityId);
            if (item != null) {
                Select1.SelectedIndex = Select1.Items.IndexOf(item);
                Select1.Disabled = true;
            }
            else {
                Select1.Disabled = false;
            }
      

  8.   

    假如是具有 runat=server 的空件,那么// .aspx
    <select id=Select1 onclick='<%# String.Format("openVoteResult('http://locahost/GetResult040.aspx?topicID=2004&cityid={0}', 800, 600)", textbox.Text.ToString()) %>' 
    runat=server
    ...// 同时还得zai .aspx.cs
    Select1.DataBind(); // 执行 绑定语法 ( <%# %> 表示的那串)
      

  9.   

    否则,普通 html 元素可以<select onclick="openVoteResult('http://locahost/GetResult040.aspx?topicID=2004&city=<% =textbox.Text.SoString() %>', 800, 600)" ....
      

  10.   

    特别注意<%# %><%= %>语法的区别,前者叫 【绑定语法】,后者由 经典ASP 延续,其实相当于 <% Reponse.Write("some string"); %>  //注意,对于 C++++,这里 必须以 ; (分号)结束,而 <%= %> 不要asp.net2.0 还有 <%$ %> 的用法