0

私は次のGridViewを持っています -

<ItemTemplate>

         <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="checkButton_OnClick"  AutoPostBack="true"/>

     </ItemTemplate>

  </asp:TemplateField>

        <asp:BoundField HeaderText="tID" DataField="tID" 
                        SortExpression="tID" HeaderStyle-CssClass = "hideGridColumn" ItemStyle-CssClass="hideGridColumn"></asp:BoundField>
        <asp:BoundField HeaderText="Name" HeaderStyle-HorizontalAlign=Center DataField="NAME" 
                        SortExpression="NAME" ItemStyle-HorizontalAlign=Center></asp:BoundField>

    </Columns>

次に、チェックボックスがチェックされている行を見つけます-

 foreach (GridViewRow gvr in table_example.Rows)
        {
            if (((CheckBox)gvr.FindControl("CheckBox1")).Checked == true)
            {
                //Here I need the tID of the row that is checked


                WebService1 ws = new WebService1();
                ws.addID(tID);
            }
        }

tIDチェックされた行のを取得する必要があります。試してみました -

int tID = gvr.cells["tID"];

しかし、これはうまくいきませんでした。

4

3 に答える 3

1

現在の行 ID を取得するには、次のようにします: gvr.ID. しかし、本当に行 ID やインデックスを操作したいのかどうかはわかりません。次のようなものを探していると思います (インデックス 1 が "tID" BoundField を参照していることを考慮して): gvr.Cells[1].Text.

于 2013-02-26T14:18:45.837 に答える
0

次のようにコードを記述して、checkButton_OnClick イベントでこのループを実行する必要はありません。

protected void checkButton_OnClick (object sender, EventArgs e)
    {
        CheckBox chk= (CheckBox)sender;
        GridViewRow gridViewRow = (GridViewRow)chk.NamingContainer;
        int rowindex = gridViewRow.RowIndex;
    }
于 2013-02-26T14:24:41.630 に答える
0
foreach (GridViewRow gvr in table_example.Rows)
        {
            if (((CheckBox)gvr.FindControl("CheckBox1")).Checked == true)
            {
                //Here I need the tID of the row that is checked

int tID = Convert.ToInt32(gvr.Cells[1].Text);
                WebService1 ws = new WebService1();
                ws.addID(tID);
            }
        }

これを試してみてください。

于 2013-02-26T14:22:01.877 に答える