Пользовательские атрибуты checkboxlist - PullRequest
1 голос
/ 26 февраля 2012

Я добавил некоторые пользовательские атрибуты в checkboxlist, но мне интересно, почему мне не удалось получить значения пользовательских атрибутов.Это будет что-то вроде этого поста jQuery - найдите элемент управления, используя пользовательский атрибут .Но то, что я хочу, это получить через автоматическую обратную передачу и код позади.

int temp = 0;
foreach (DataRow rows1 in ds_ss_equipments_data.Tables[0].Rows)
{
    cblEquip.Items.Add(new ListItem(rows1["name"].ToString() + " " + rows1["quota"].ToString() + " X " + rows1["price"].ToString(), rows1["id"].ToString()));
    cblEquip.Items[temp].Attributes["price"] = rows1["price"].ToString();
    cblEquip.Items[temp].Attributes["id"] = rows1["id"].ToString();
    cblEquip.Items[temp].Attributes["quota"] = rows1["quota"].ToString();
    temp += 1;
}



foreach (ListItem li in cblEquip.Items)
{
    if (li.Selected)
    {
        equip += (Convert.ToDecimal(li.Attributes["price"]) * Convert.ToInt32(li.Attributes["quota"]));     
    }
}

1 Ответ

3 голосов
/ 26 февраля 2012

Ссылка, предоставленная Тимом, вероятно, решит вашу проблему. Просто заметка о вашем стиле программирования. Эта переменная temp выглядит очень странно. Попробуйте это

foreach (DataRow rows1 in ds_ss_equipments_data.Tables[0].Rows) 
{                              
    var listItem = new ListItem(rows1["name"].ToString() + " " + ...)
    listItem.Attributes["price"] = rows1["price"].ToString(); 
    listItem.Attributes["id"] = rows1["id"].ToString(); 
    listItem.Attributes["quota"] = rows1["quota"].ToString(); 
    cblEquip.Items.Add(listItem); 
} 

проще и понятнее.

И заменить это

rows1["name"].ToString() + " " + rows1["quota"].ToString() + " X " + rows1["price"].ToString()

К этому

String.Format("{0} {1} X {2}", rows1["name"], rows1["quota"], rows1["price"])

Создание предмета будет выглядеть намного красивее

string caption = String.Format(
    "{0} {1} X {2}", 
    rows1["name"], 
    rows1["quota"],
    rows1["price"]
);
var listItem = new ListItem(caption, rows1["id"].ToString())
...