Я хочу вставить определенные значения строки при установке флажка. Дизайн и источник приведены ниже. Из дизайна мне нужно выбрать несколько предметов. Если я нажму «Утвердить», мне придется сохранить эти отмеченные флажком значения строк в БД. Помогите мне найти правильное решение.

Дизайн:

enter image description here

ASPX:

enter image description here

C #:

Приведенный ниже код получает все значение gridview и сохраняет его в db. Как я могу изменить этот код в соответствии с вышеуказанными требованиями.

protected void btnApprove_Click(object sender, EventArgs e)
    {

       ShadingAnalysisDataSetTableAdapters.tbl_ItemRequest_StatusTableAdapter rs;
       rs = new ShadingAnalysisDataSetTableAdapters.tbl_ItemRequest_StatusTableAdapter();

       foreach (GridViewRow row in GridView2.Rows)
        {
            string ItemName = row.Cells[0].Text;
            string Quantity = row.Cells[1].Text;

            rs.testInsert(ItemName, Quantity);
        }
    }
-2
Vipin 1 Дек 2014 в 09:21
Где C# стоит за вашими нажатиями кнопок? Никто не хочет писать всю проверку для выбранных элементов и запросы к базе данных для каждого.
 – 
grovesNL
1 Дек 2014 в 09:25
: я добавил код С#.
 – 
Vipin
1 Дек 2014 в 09:31
@Vipin: проблема решена?
 – 
Imad
2 Дек 2014 в 08:02
@Имад: да. Теперь он работает нормально.
 – 
Vipin
2 Дек 2014 в 08:10

3 ответа

Лучший ответ

Вам нужно пройти через сетку и найти флажок по идентификатору в ячейке текущей строки.

foreach (GridViewRow row in GridView2.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            CheckBox chkRow = (row.Cells[2].FindControl("CheckBox1") as CheckBox);
            bool chk = chkRow.Checked;
            // Do your stuff
        }
    }

Источник: http: //www.aspsnippets .com / Articles / GridView-with-CheckBox-Get-Selected-Rows-in-ASPNet.aspx

3
Imad 1 Дек 2014 в 09:27

Приведенный ниже код работает отлично.

foreach (GridViewRow row in GridView2.Rows)
    {
      if (row.RowType == DataControlRowType.DataRow)
        {
           CheckBox chkRow = (row.Cells[2].FindControl("CheckBox1") as CheckBox);
             if (chkRow.Checked)
                {
                   string ItemName = row.Cells[0].Text;
                   string Quantity = row.Cells[1].Text;

                   rs.testInsert(ItemName, Quantity);
                }
        }
    }
1
Vipin 1 Дек 2014 в 10:00

Вот мой GridView

<asp:GridView
                ID="grdAccounts"
                class="table table-condensed"
                runat="server"
                AutoGenerateColumns="False"
                CellPadding="4"
                ForeColor="#333333"
                GridLines="None">
                <AlternatingRowStyle BackColor="White" />
                <Columns>
                    <asp:BoundField DataField="CUST_NAME" HeaderText="Name" />
                    <asp:BoundField DataField="CUST_NUMBER" HeaderText="Account Number" />
                    <asp:BoundField DataField="BR_CODE" HeaderText="CIF Number" />
                    <asp:TemplateField HeaderText="Select" >
                        <EditItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server" ItemStyle-HorizontalAlign="Right"  />
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server" onclick="SingleCheckboxCheck(this)" OnCheckedChanged="CheckBox1_CheckedChanged" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <EditRowStyle BackColor="#7C6F57" />
                <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                <PagerStyle CssClass="pagination-ys" />
                <RowStyle BackColor="#E3EAEB" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#F8FAFA" />
                <SortedAscendingHeaderStyle BackColor="#246B61" />
                <SortedDescendingCellStyle BackColor="#D4DFE1" />
                <SortedDescendingHeaderStyle BackColor="#15524A" />
            </asp:GridView>

С# (я предположил, что требуемое значение находится в 1 ячейке выбранной строки.)

string accnbr = string.Empty;
                foreach (GridViewRow gvrow in grdAccounts.Rows)
                {
                    CheckBox chk = (CheckBox)gvrow.FindControl("CheckBox1");
                    if (chk != null & chk.Checked)
                    {
                        cif += gvrow.Cells[1].Text + ',';
                    }
                }
0
Aruna Prabhath 8 Ноя 2022 в 10:34