0

したがって、基本的には、送信時に、続行する前に一連のボックスがチェックされているかどうかを確認する単純なループを実行することを目指しています。PHPやMVCなどでこれを行う方法は知っていますが、上司からWebコントロールを使用せざるを得ません。

エルゴ、ここにいます。

Default.aspxの関連コード

<div>
    <asp:CheckBoxList id="eligibilityreqs" runat="server">
        <asp:ListItem value="item1" runat="server">I am great</asp:ListItem>
        <asp:ListItem value="item2" runat="server">I am amazing.</asp:ListItem>
        <asp:ListItem value="item3" runat="server">I completed EVERTHING</asp:ListItem>
        <asp:ListItem value="item4" runat="server">Pies are delicious</asp:ListItem>
        <asp:ListItem value="item5" runat="server">Oh man a fifth one</asp:ListItem>
    </asp:CheckBoxList>
</div>
<p>
    <asp:Label Text="" id="finalmessage" runat="server" />
</p>
<div>
    <asp:Button Text="Submit" runat="server" onclick="process" />
</div>

Default.aspxのコードビハインド

using System;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Web.Configuration;
using System.Data.Odbc;
using System.Web.UI.WebControls;

namespace minor
{
    public partial class Default : System.Web.UI.Page
    {
        protected void process (object sender, EventArgs e)
        {
            bool valid = true;
            string debugtext = "";
            foreach (ListItem li in eligibilityreqs.Items) {
                if (!li.Selected) {
                    valid = false;
                    debugtext = debugtext + li.Selected;
                }
            }
            if (!valid) {
                finalmessage.Text = "There has been an error, please check all boxes." + debugtext;
            } else {
                string conString = WebConfigurationManager.ConnectionStrings ["connectionstring"].ConnectionString;
                using (OdbcConnection con = new OdbcConnection(conString)) {
                    string sqlstring = "SELECT yum FROM pie_application LIMIT 1;";
                    using (OdbcCommand com = new OdbcCommand(sqlstring, con)) {
                        con.Open ();
                        string reader = Convert.ToString (com.ExecuteScalar ());
                        finalmessage.Text = reader;
                    }
                }
            }
        }
    }
}

参考までに、debugtextの出力はfalse、false、false、false、falseです。

4

2 に答える 2

0

私の大げさな推測は、CheckBoxListポストバックでもデータバインドすることです。これにより、選択したすべてのアイテムの選択が解除されます。

だから、IsPostBackプロパティを確認してください。

protected void Page_Load(Object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        DataBindCheckBoxList();
    }
}
于 2013-01-24T21:20:27.590 に答える
0

これは既知のモノバグであることが判明しました。興味のある方は、monoを更新するか、動作することを前提にとにかくビルドしてからデプロイしてください。

または、コーディングを改善し、Webコントロールを完全に回避します...上司が許可した場合。

于 2013-01-29T17:34:57.950 に答える