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("&lt;table class='table table-invoice'&gt;"));

【讨论】:

【参考方案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 的问题 C#

向 asp.NET RadioButton 控件添加自定义属性

asp.net中repeater控件里使用一组radiobutton为啥设置了相同groupname还是一组按钮都能选中

asp.net用button_click事件重置页面 使页面上选择过的checkbox和radiobutton控件清空呢

ASP.NET RadioButton 与名称(组名)混淆