2

チェックボックスがオンになっているかどうかを確認するにはどうすればよいですか?なぜこれが機能しないのか非常に困惑しています-それはとても簡単です!

私のWebフォーム:

<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

チェックボックス.checkedは、必要なコンテキストでは使用されていません(これは、trueの場合、チェックボックスがチェックされているように見えるブール値です)。

代わりにチェックボックスリストを使用することができます。次に、次のことを行うことができます。

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