0

我通过以下方式绑定了我的复选框列表:

        string countrySQL = "Select id, CurrencyName From VirtualAccount_Currency";
        string[] param = { };
        object[] paramVal = { };

        return ClassDBQuery.ExecDataReader(countrySQL, param, paramVal);

数据层:

        string selCurrSQL = "SELECT * FROM VirtualAccount WHERE MerchantMasterID = @id";

        string[] param = { "@id" };
        object[] paramVal = { currID };

        return ClassDBQuery.ExecDataReader(selCurrSQL, param, paramVal);

这是我的代码:

            DataTable currDT = new DataTable();
            currDT = ClassView.SelectCurrency(idses);

            foreach (DataRow row in currDT.Rows)
            {
                foreach (ListItem item in currencyBox.Items)
                {
                    if (item.Value == (row["CurrencyID"].ToString()))
                    {
                        item.Selected = true;
                        break;
                    }
                }
            }

现在,当我运行我的代码时,没有遇到错误,但会显示复选框的值。当我调试它时,系统只在第一个 foreach 中循环进入第二个 foreach 但不通过 if 语句......我的代码有什么问题......?

谢谢你...

4

2 回答 2

1

试试下面,

        foreach (DataRow row in currDT.Rows)
        {
            foreach (ListItem item in currencyBox.Items)
            {
                // check here what you get
                int currencyId= row.Field<int>("CurrencyID");

                if (item.Value == currencyId.ToString())
                {
                    item.Selected = true;
                    break;
                }
            }
        }

如果您的字段 CurrencyID 可以有空值,那么,

int? currencyId= row.Field<int?>("CurrencyID");

if (currencyId! =null && item.Value == currencyId.ToString())
{
    item.Selected = true;
    break;
}
于 2013-04-30T03:34:22.937 回答
0

尝试这个:-

 for (int j = 0; j < CheckBoxList1.Items.Count; j++)
 {
 if (CheckBoxList1.Items[j].Text.Trim() ==row["CurrencyID"].ToString())
 {  
 CheckBoxList1.Items[j].Selected = true;  break;
 }
 }

希望这可以帮助!!

于 2013-04-30T06:14:14.123 回答