0

フィルタリングされたGridviewがあります。私の質問は、ボタンがクリックされたときにフィルター処理された後、DataTable を介してフィルター処理された Gridview の一番上の行にアクセスする方法です。

SqlDataAdapter da = new SqlDataAdapter("SELECT Id, Num, Trans, S ,Est_Trans,Linked FROM vwOpenTcktSum_TransTypeTotal WHERE (Q = @Q)  AND (S = @S)", cs);
da.SelectCommand.Parameters.AddWithValue("@Q", Q);
da.SelectCommand.Parameters.AddWithValue("@S", S);

DataSet ds = new DataSet();
da.Fill(ds);

DataTable dt = new DataTable();
 dt = ds.Tables[0];

DataTable newDataTable = dt.AsEnumerable()
         .Where(r => !ListLinkedIds.Contains(r.Field<int>("LinkedTicketId")))
          .CopyToDataTable();

 Session["Data"] = ds;
 gvMain.DataSource = newDataTable; //Datasource
 gvMain.DataBind();


 protected void btnGetNext_Click(object sender, EventArgs e)
 {
      //Get Top Row from Gridview
 }
4

2 に答える 2

1

グリッド ビューの RowIndex の後、各列の Cell[index] に移動できます。

GridView1.Rows[0].Cells[0].Text
于 2013-07-25T20:48:15.770 に答える
0

バインド後にデータソースにアクセスできません...

残念ながら、データ ソースは gridview コントロールにバインドされた後に破棄されるため、ボタン クリックでデータ テーブル自体にアクセスすることはできません。データテーブルからデータを取得できるのは、最初にデータが作成されたとき、またはグリッドビュー行にバインドされたときだけです。ライフサイクルの行データ バインディング部分にアクセスするには、gridview 属性が OnRowDataBound と呼ばれていると思いますが、通常はリピーター コントロールを使用するので、経験からは言えません。


代わりにデータ行にアクセス...

ただし、行自体からデータにアクセスすることはできます。これは、送信者の親 (または先祖) を使用して行うことができます (送信者がグリッドビュー行のボタンであると仮定します)。送信者の親をグリッドビューとしてキャストし、その行コレクションで必要な行を探します。この場合、最初の行のインデックスはおそらく 0 になります。


ボーナス情報:

私はあなたのために例を入力するつもりでしたが、N4TKD のコメントにあるリンクはそれをよく説明しています。見逃した方はこちらからどうぞ:

于 2013-07-25T20:34:52.007 に答える