ASP.NET C#中Radiobutton控件的疑问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET C#中Radiobutton控件的疑问相关的知识,希望对你有一定的参考价值。
在登录.ascx中自己拉了2个radiobutton控件,分别表示2种权限
但是不知道该如何把数据库中的权限和这2个控件联系起来…
不知道我这样问清楚没…
步骤1:拉控件。
步骤2:在.cs中写4段代码。
/// 选择下拉列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void MenuLevel_DDL_SelectedIndexChanged(object sender, EventArgs e)
if (this.MenuLevel_DDL.SelectedItem.Value == "0")
this.MenuUp_DDL.Items.Clear();
this.MenuUp_DDL.Items.Add(new ListItem("请选择..", "0"));
else
//Linq查询
var query = from t in dc.menu
where t.menu_level == Int32.Parse(MenuLevel_DDL.SelectedValue)
select t;
this.MenuUp_DDL.DataSource = query;
this.MenuUp_DDL.DataBind();
/// 初始化页面
/// </summary>
public void ClearText()
this.MenuName_TB.Text = "";
this.MenuUrl_TB.Text = "";
this.MenuLevel_DDL.SelectedIndex = 0;
if (this.MenuLevel_DDL.SelectedItem.Value == "0")
this.MenuUp_DDL.Items.Clear();
this.MenuUp_DDL.Items.Add(new ListItem("请选择..", "0"));
this.MenuFlag_RBL.SelectedIndex = 0;
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Cancel_BT_Click(object sender, EventArgs e)
ClearText();
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Cancel_BT_Click(object sender, EventArgs e)
ClearText();
参考技术A 动态实例化。 参考技术B 如果radiobutton1为真的话,在下面then中在写入数据,else中radiobutton2再重为真的话,在下面then中在写入数据,else退出 参考技术C 比如 用户"张三"登陆,那么数据库设计时应该是如下
UID UerName UserPwd 权限1 权限2
3 张三 ****** TURE False
当你登陆的时候,读取“张三”该用户数据,判断radiobutton1是不是为True
---------------------------------------------------------------------
从 C# 代码隐藏错误创建 ASP.NET 控件
【中文标题】从 C# 代码隐藏错误创建 ASP.NET 控件【英文标题】:Creating ASP.NET controls from C# Code Behind error 【发布时间】:2015-12-16 08:55:27 【问题描述】:请考虑以下几点:
后面的代码:
public void InitiateTable()
Controls.Add(new LiteralControl("<table class=\"table table-invoice\" >")); //Line that gave me error
...
Controls.Add(new LiteralControl("</table>"));
在我的 ASP.Net 页面上:
<% InitiateTable(); %>
当我运行代码时,它给了我一个错误提示:
The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
谁能解释我做错了什么? 谢谢。
【问题讨论】:
"The Controls collection cannot be modified because the control contains code blocks"的可能重复 【参考方案1】:注意按照评论中的建议将 LiteralControl 更改为 Control。
您不能修改容器包含 代码块的控件集合,因为错误消息告诉您。 Controls.Add 将修改控件集合。要解决这个问题:
在你的aspx页面改变
<% InitiateTable(); %>
到
<asp:Literal runat="server" id="mytable" />
然后在您的页面加载方法中,添加对 InitiateTable() 的调用
然后在您的 InitiateTable() 方法中将您的代码更改为以下内容:
public void InitiateTable()
var literalControlValue = new StringBuilder();
literalControlValue.Append("<table class=\"table table-invoice\" >");
...
literalControlValue.Append("</thead>"));
mytable.Text = literalControlValue.ToString();
【讨论】:
您好,感谢您的回复,但我收到此错误 `Unknown server tag 'asp:LiteralControl'..` 我能知道为什么会这样吗?提前致谢。 这是因为 LiteralControl 位于 System.Web.UI 命名空间中,而不是像许多其他控件一样位于 System.Web.UI.WebControls 命名空间中。只需在您的 aspx 页面指令中添加适当的标签前缀和 system.web.ui 即可。 应该是asp:Literal
而不是asp:LiteralControl
【参考方案2】:
Controls.Add(new LiteralControl("<table class='table table-invoice'>"));
【讨论】:
【参考方案3】:问题是当您使用Controls
时,您引用的是页面本身,而不是您调用InitiateTable
的区域。
如果您要在该区域中插入控件,这就是占位符的用途:
<asp:Placeholder id="phTable"></Placeholder>
然后在您的 Page_Load 或其他一些事件代码中:
private void Page_Load(object sender, System.EventArgs e)
phTable.Controls.Add(new LiteralControl("<table class=\"table table-invoice\" >"));
phTable.Add(new LiteralControl("</thead>"));
【讨论】:
以上是关于ASP.NET C#中Radiobutton控件的疑问的主要内容,如果未能解决你的问题,请参考以下文章
asp.net(C#)怎样将listview中的radiobutton设置成互斥?
向 asp.NET RadioButton 控件添加自定义属性
asp.net中repeater控件里使用一组radiobutton为啥设置了相同groupname还是一组按钮都能选中
asp.net用button_click事件重置页面 使页面上选择过的checkbox和radiobutton控件清空呢