как получить значения строки, когда флажок установлен в gridview

1

прежде чем я попросил об этом, я проверил некоторые проверки, чтобы убедиться, что это не дубликат и способы получить значения строк из строки, которая имеет флажок в поле шаблона... но я не могу показаться чтобы заставить его работать... До сих пор я пробовал

protected void Page_Load(object sender, EventArgs e)
    {
        Entities NW = new Entities();

        var customers =
            from c in NW.Customers
            where (c.ContactName.StartsWith("Ma") || c.ContactName.StartsWith("An")
            || c.ContactName.StartsWith("T")
            || c.ContactName.StartsWith("V")
            )
            orderby c.ContactName ascending
            select new
            {
                c.CustomerID,
                c.ContactName,
                c.CompanyName,
                c.City
            };

        gv1.DataSource = customers.ToList();
        gv1.DataBind();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in gv1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                CheckBox chkRow = (row.Cells[0].FindControl("CB") as CheckBox);
                if (chkRow.Checked)
                {
                    Label1.Text = row.Cells[2].Text;
                }
            }
        }
    }

Я прошел через событие нажатия кнопки, и когда он добирается до

if (chkRow.Checked)

его показ как null и проскакивает над ним.

моя разметка

<asp:GridView ID="gv1" runat="server">
            <HeaderStyle BackColor="SkyBlue" />
            <AlternatingRowStyle BackColor="Yellow" />
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="CB" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

когда я смотрю на источник после того, как я запустил, флажки все названы по-другому, чем то, что я дал им идентификатор "CB", прикрепленный является ссылкой на источник, когда он работает

Изображение 174551

Я не уверен, что я делаю неправильно с этим

Теги:
checkbox
gridview

1 ответ

0
Лучший ответ

В вашем GridView должно быть больше столбцов, потому что вы ссылаетесь на Cell[2] в своем коде.

Вы можете попытаться использовать объект row для поиска своего элемента управления:

CheckBox chkRow = (row.FindControl("CB") as CheckBox);
  • 0
    Посмотрев на ваш ответ, я порезал часть кода, избавился от операторов if и изменил свой флажок, чтобы он соответствовал вашему, и он отлично работал.
  • 0
    На самом деле, я думал, что это сработало, но он просто захватывает любой найденный элемент управления и заполняет Метку.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню