asp.net 选中 C# 复选框

本文关键字:复选框 选中 net asp | 更新日期: 2023-09-27 18:31:19

如何确定复选框是选中还是未选中?非常困惑为什么这不起作用 - 它是如此简单!

在我的网络表单上:

<asp:CheckBox ID="DraftCheckBox" runat="server" Text="Save as Draft?" />
<asp:Button ID="PublishButton" runat="server" Text="Save" CssClass="publish" />

在我的保存按钮的单击事件中运行的代码:

 void PublishButton_Click(object sender, EventArgs e)
{
    if (DraftCheckBox.Checked)
            {
                newsItem.IsDraft = 1;
            }
}
调试时,当我

在浏览器中选中复选框时,它永远不会单步进入 If 语句。想法?!

我认为可能还有其他一些代码会影响这一点,如下所示......

在Page_load我有以下内容:

PublishButton.Click += new EventHandler(PublishButton_Click);
if (newsItem.IsDraft == 1)
    {
        DraftCheckBox.Checked = true;
    }
    else
    {
        DraftCheckBox.Checked = false;
    }

newsItem 是我的数据对象,我需要相应地设置复选框选中状态。点击保存按钮时,我需要根据复选框的选中状态更新 IsDraft 属性:

void PublishButton_Click(object sender, EventArgs e)
{
    if (IsValid)
    {
        newsItem.Title = TitleTextBox.Text.Trim();
        newsItem.Content = ContentTextBox.Text.Trim();
        if (DraftCheckBox.Checked)
        {
            newsItem.IsDraft = 1;
        }
        else
        {
            newsItem.IsDraft = 0;
        }
        dataContext.SubmitChanges();
    }
}

因此,isDraft = 1 应等于复选框处于选中状态,否则应取消选中复选框。目前,它没有显示这一点。

asp.net 选中 C# 复选框

指定按钮单击的事件

<asp:Button ID="PublishButton" runat="server" Text="Save" onclick="PublishButton_Click" />

我可以看到你的按钮上没有OnClick。所以像这样:

<asp:CheckBox ID="DraftCheckBox" runat="server" Text="Save as Draft?" />
<asp:Button ID="PublishButton" runat="server" OnClick="PublishButton_Click" 
Text="Save" CssClass="publish" />

然后函数应该像它一样工作:

protected void PublishButton_Click(object sender, EventArgs e)
{
    if (DraftCheckBox.Checked)
            {
                newsItem.IsDraft = 1;
            }
}

请将代码替换为以下代码。

void PublishButton_Click(object sender, EventArgs e)
    {
        if (DraftCheckBox.Checked==True)
                {
                    newsItem.IsDraft = 1;
                }
    }

尝试在窗体的按钮字段中添加onclick="PublishButton_Click"。 而且我不知道这是否有区别,但是生成的事件处理程序受到无效保护。

对我来说,最好的解决方案是创建2个单独的页面:1个用于编辑新闻文章,1个用于新新闻文章。因此,当页面重新加载时,Ill 永远不会处于正在创建新的新闻数据对象的位置。

按下保存按钮时,这两个页面都会返回到文章索引列表页面,这似乎可以保存草稿复选框的状态,然后在编辑页面上显示状态。

复选框.checked 未在您想要的上下文中使用(这是一个布尔值,如果为 true,将使复选框看起来处于选中状态)。

您可以做的是改用复选框列表。然后,您可以执行以下操作:

foreach(Listitem li in CheckBoxList1.Items)
{
  if (li.Selected)
  {
    NewsItem.Isdraft = 1;
  }
}