【问题标题】:can i use a session variable as the text of a listitem in a radiobutton list?我可以使用会话变量作为单选按钮列表中列表项的文本吗?
【发布时间】:2014-01-29 00:13:13
【问题描述】:

我有这个代码

<asp:RadioButtonList ID="rblSplitWeek" runat="server">  
                   <asp:ListItem selected="true">No Choice</asp:ListItem>
                    <asp:ListItem Text = "First" Value = "Session('s_price_1')"></asp:ListItem>
     <asp:ListItem Text = "Second"></asp:ListItem>
  </asp:RadioButtonList>

但是尝试将会话变量放入时总是出错

非常感谢

杰米

【问题讨论】:

    标签: asp.net radio-button


    【解决方案1】:

    很遗憾,此上下文不支持数据绑定语法 (&lt;%# %&gt;),并且在为服务器控件分配值时,文字绑定语法(&lt;%= %&gt;&lt;%: %&gt;)不会产生所需的结果。

    以下是一些替代方法:

    1.绑定到数据源:

    如果您创建了包含文本和值的对象集合,则可以轻松设置单选按钮列表的 DataSource、DataTextField 和 DataValueField 属性。因为数据源将在代码隐藏中填充,所以访问会话变量是微不足道的。

    例如,在标记中:

    <asp:RadioButtonList ID="rblSplitWeek" runat="server"
        DataTextField="Text"
        DataValueField="Value" />
    

    在代码隐藏中:

    public class RadioValue
    {
        public string Text { get; set; }
        public string Value { get; set; }
    }
    
    // ...
    
    var values = new RadioValue[]
    {
        new RadioValue { Text = "No Choice" },
        new RadioValue { Text = "First", Value = Session["s_price_1"].ToString() },
        new RadioValue { Text = "Second" }
    }
    rblSplitWeek.DataSource = values;
    rblSplitWeek.DataBind();
    

    2。从代码隐藏分配值

    如果你用文本声明列表项但没有值,你可以从脚本中设置值。

    例如,在标记中:

    <asp:RadioButtonList ID="rblSplitWeek" runat="server">  
        <asp:ListItem selected="true">No Choice</asp:ListItem>
        <asp:ListItem Text = "First" />
        <asp:ListItem Text = "Second" />
    </asp:RadioButtonList>
    

    在代码隐藏中:

    rblSplitWeek.Items.FindByText("First").Value = Session["s_price_1"].ToString();
    

    【讨论】:

      【解决方案2】:

      我知道这已经很晚了,但另一种方法是在 PageLoad() 事件中加载 RadioButtonList 的 SelectedIndex 属性。然后你不必有一个小的 RadioValue 类——当然这很好。这是我上次的做法……是的,我也使用了 RadioValue 类……但这里使用的是没有 RadioValue 类的单选按钮列表:

          protected void Page_Load(object sender, EventArgs e)
          {
              //Reload the last radio button selected.
              if (Session["rblSplitWeekIndex"] != null)
              {
                  rblSplitWeek.SelectedIndex = ((int)Session["rblSplitWeekIndex"]);
              }
      

      ...

      我将我的单选按钮列表选定索引保存在 MasterPage 中,该 MasterPage 具有搜索范围单选按钮列表和搜索文本框。因此,由于 MasterPage 杀死了我的单选按钮列表(以及此处未显示的文本),我必须在需要时加载它。希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2011-09-15
        • 1970-01-01
        • 2014-07-13
        • 1970-01-01
        • 2016-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多