11

RowCommand イベントからセルの値を取得する必要がありますが、値が GridView の PrimaryKeyNames パラメーターにありません。

現在私は持っています:

if (e.CommandName == "DeleteBanner")
        {
            GridViewRow row = gvCurrentPubBanner.SelectedRow;
            string BannerName = row.Cells[1].Text;

これは機能しません(範囲外のインデックスエラー)、私も試しました:

    int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gvCurrentBanners.Rows[index];

CommandArgument (バナー ID) が行 ID ではないため、これも機能しません。

4

6 に答える 6

11
Dim row As GridViewRow = CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)

次に、キーを取得するか、セルを取得して datacontrolfield にキャストします。

Dim id As Guid = GridView1.DataKeys(row.RowIndex).Value

Dim email As String = CType(row.Cells(2), DataControlFieldCell).Text

注意: これは Boundfields でのみ機能します。

于 2012-05-28T11:36:15.477 に答える
3

int index = Convert.ToInt32(e.CommandArgument);

Gridviewでボタンを使用する場合にのみ機能します

<Columns>   
     <asp:ButtonField ButtonType="Button" Text="Save"  CommandName="Select" /> 
</Columns>

これが正しいかどうかはわかりませんが、私にとってはうまくいきます

于 2012-12-26T03:10:25.697 に答える
3

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

GridViewRow gvRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
int rowIndex=gvRow.RowIndex
于 2012-12-20T06:06:34.973 に答える
1
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Edit_Mob") {

        GridViewRow row = (GridViewRow (((ImageButton)e.CommandSource).NamingContainer);

        int RowIndex = row.RowIndex; // this find the index of row

        int varName1 = Convert.ToInt32(((Label)row.FindControl("lbl_mobile_id")).Text.ToString()); //this store the  value in varName1

        }
   }
于 2012-12-13T07:47:35.213 に答える