Общее количество выбранных элементов в Gridview - PullRequest
0 голосов
/ 24 марта 2011

У меня есть Gridview

enter image description here

У меня есть кнопка нажатия и две метки.(Risk_label и MV_label)

Столбец Risk and MV имеет значение цены.

Имена столбцов моих флажков: NameCheckBoxField1 и NameCheckBoxField2

Как рассчитать только "Какойя выбрал в Gridview "Общая сумма риска и общая сумма MV в моих ярлыках?

Пример;

Risk (Checked rows) --> 10, 20, 30 ---> Risk_label = 60
MV (Checked rows) --> 20, 30, 40 ---> MV_label = 90

EDİT : я пробую этот код;

double sum = 0;
foreach (GridViewRow gvr in GridView1.Rows)
{
    CheckBox cb = (CheckBox)gvr.FindControl("NameCheckBoxField1");
    if (cb.Checked)
    {
        double amount = Convert.ToDouble(gvr.Cells[1].Text);
        sum += amount;
    }
}
Risk_label.Text = sum.ToString(); 

Но я получаю ошибку.

Ответы [ 2 ]

1 голос
/ 24 марта 2011
protected void CalculateButton_Click(object sender, EventArgs e)
        {
            Int32 totalMVValue = 0, totalRiskValue = 0;

            // Iterate through the Products.Rows property
            foreach (GridViewRow row in GridView1.Rows)
            {
                // Access the CheckBox
                CheckBox mvSelectorCheckBox = (CheckBox)row.FindControl("MVSelector");
                if (mvSelectorCheckBox != null && mvSelectorCheckBox.Checked)
                {
                    // First, get the primaryId for the selected row
                    int mvValue=
                        Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
                    totalMVValue += mvValue;
                }

                CheckBox riskSelectorCheckBox = (CheckBox)row.FindControl("RiskSelector");
                if (riskSelectorCheckBox != null && riskSelectorCheckBox.Checked)
                {
                    // First, get the primaryId for the selected row
                    int riskValue =
                        Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
                    totalRiskValue += riskValue;
                }
            }           
        }

Глядя на ваш последний комментарий:

 <asp:templatefield headertext=""> <itemtemplate> <asp:CheckBox DataField="NameCheckBoxField1" Checked="True" runat="server"></asp:CheckBox> </itemtemplate> </asp:templatefield>

Назначен ли DataField NameCheckBoxField1? Или это опечатка? Это должно быть ID="NameCheckBoxField1"

1 голос
/ 24 марта 2011

Я думаю, jQuery будет лучшим вариантом для вас.1. Добавьте классы для Risk_Label и MV_Label 2. Установите флажок, чтобы получить значения Risk_Label и MV_Label для одной и той же строки, используя классы.3. Если это проверено, то добавьте значение к другим мудрым значениям вычитания.

    $('.mygrid :checkbox').click(function () {

                            var amt = parseFloat($(this).parents('tr').find('.ClassRisk_label').text());
                            //One Fee Case
                            if (!isNaN(amt)) {
                                if ($(this).is(':checked')) {
                                    totalAmt = totalAmt + amt;
                                }
                                else {
                                    totalAmt = totalAmt - amt;
                                }
                            }
//Show the value...
});
...