2

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

在我的网络表单上:

<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 应该等于选中了复选框,否则应该取消选中复选框。目前,它没有显示这一点。

4

6 回答 6

1

指定按钮单击事件

<asp:Button ID="PublishButton" runat="server" Text="Save" onclick="PublishButton_Click" />
于 2012-04-16T11:39:07.860 回答
1

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;
            }
}
于 2012-04-16T11:39:40.490 回答
0

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

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

于 2012-04-17T10:42:35.213 回答
0

尝试onclick="PublishButton_Click"在表单上的按钮字段中添加。而且我不知道它是否有所作为,但是生成的事件处理程序是受保护的无效的。

于 2012-04-16T11:48:35.300 回答
0

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

void PublishButton_Click(object sender, EventArgs e)
    {
        if (DraftCheckBox.Checked==True)
                {
                    newsItem.IsDraft = 1;
                }
    }
于 2012-04-16T12:35:38.090 回答
0

checkbox.checked 未在您希望的上下文中使用(这是一个布尔值,如果为真,将使复选框看起来已选中)。

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

foreach(Listitem li in CheckBoxList1.Items)
{
  if (li.Selected)
  {
    NewsItem.Isdraft = 1;
  }
}
于 2014-07-01T12:15:33.007 回答