1

データを含む GridView があります。この GridView の最初の列は "SELECT" 列です。

ユーザーが SELECT をクリックすると、行全体が強調表示されます。

このクリック アクションに関するイベントがあります。

protected void gvShows_SelectedIndexChanged(object sender, EventArgs e)
{
}

基本的に私がやりたいことは、SELECTED 行ごとに、列の値を抽出したいです。

  • 情報源
  • 表示ID
  • エピソードID

**ここに問題があります:

string dataSource = "";
int showId = 0;
int episodeId = 0;

foreach (DataRow row in gvShows.Rows)
if (the row is selected/highlighted then...)
{
    dataSource = the value under column "dataSrouce" for this ROW.
    showId = the value under column "showId" for this ROW.
    episodeId = the value under column "episodeId" for this ROW.
}

誰か私に手を貸してくれませんか?

4

3 に答える 3

2

SelectedIndexChanging (SelectedIndexChanged ではなく) を使用すると、新しく選択された行インデックスにアクセスできるようになると思います。最初のセルがボタンの場合、次の 3 つのセルで必要な値が得られます。

    protected void gvShows_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        GridViewRow r = gvShows.Rows[e.NewSelectedIndex];

        string dataSource = r.Cells[1].Text;
        int showId = Convert.ToInt32(r.Cells[2].Text);
        int episodeId = Convert.ToInt32(r.Cells[3].Text);
    }

編集:

SelectedIndexChanging を使用したくない場合は、SelectedIndexChanged を使用できることを追加したいと思います。

    protected void gvShows_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow r = gvShows.Rows[gvShows.SelectedIndex];

        string dataSource = r.Cells[1].Text;
        int showId = Convert.ToInt32(r.Cells[2].Text);
        int episodeId = Convert.ToInt32(r.Cells[3].Text);
    }

また、データベースを操作している場合は、データキーをグリッドビューに追加して、操作するレコードの主キーを取得できます。

以下をグリッドビューに追加します。

DataKeyNames="showId"

そして、分離コードからこの値にアクセスできます。

int showId = Convert.ToInt32(gvShows.DataKeys[gvShows.SelectedIndex].Value);
于 2013-06-13T00:50:26.863 に答える
0

「選択/強調表示された」行の属性に依存する必要があります。選択された行であるかどうかを判断できる属性を見つけます。

于 2013-06-12T22:41:02.300 に答える