2017-04-12 6 views
0

私は、GridViewでプロセスを構築する作業をしています。これにより、ユーザーは1つの編集を提供し、複数のレコードに保存できます。これまでのところ私はこの計画に着手しましたが、この編集にレコードIDの配列を組み込むのが最善の方法であるかどうかはわかりません。ここでGridViewでCheckoBxesから配列を作成するC#

が、私は今の周り蹴りだものです...

  1. は、チェックボックスを提供し、私のGridVeiwにテンプレートのフィールドを追加します。 (完了!)
  2. グリッド内のすべての列ヘッダーを含むDropDownListを提供し、ソース表の列名をDDL内の項目の値として関連付けます。
  3. DDLで項目を選択すると、DDLで選択された列の内容を編集するための編集ウィンドウがOnSelectedIndexChangedに表示されます。
  4. 「保存」を実行すると、ドロップダウンリストで選択した列の各行に同じ値を書き込むようにコードビーンが配列を回転します。
    • これについて考える私は、列の既存のコンテンツを編集する手段を提供するために、フォーカスの列の配列の最初のレコードのデータをキャプチャすると思います。

のGridViewのチェックボックス以外のすべては、GridViewコントロールの外に処理されると完了時にGridViewのチェックボックスをクリアし、変更されたこれらの細胞における更新された列の値を表示する再描画されることになります。チェックボックスから配列を構築する上 enter image description here

思考:私はGridViewコントロールの左側のスクリーンショットを提供してきました、ここで私がいじってるものを理解さのために

?私は例#以下の2あたりのチェックボックスから配列の人口にアプローチするために追加のコードを追加

UPDATE 04/13/17午後1時、中央アメリカ ...

protected void ColumnSelectDDL_TextChanged(object sender, EventArgs e) 
    { 
    foreach (GridViewRow row in ActVulListGV.Rows) 
     { 
     var ri = -1; 
     if (row.RowType == DataControlRowType.DataRow) 
      { 
      CheckBox chk = (row.Cells[0].FindControl("chkid") as CheckBox); 
      if (chk.Checked) 
       { 
       // Create and append your array here 
       var recnumbers = new int[0]; 
       ++ri; 
        { 
        Label REC = (row.Cells[1].FindControl("RecID") as Label); 
        recnumbers[ri] = Convert.ToInt32(REC.Text); 
        } 
        recnumbers.ToList().ForEach(i => Console.WriteLine(i.ToString())); 
       } 
      } 
     } 
    } 

答えて

0

あなたはバインドすることができますRowdatabound(オプション1)の時、またはSaveボタンのonclickにバインドされたGridviewの後のチェックボックスの配列は、グリッド行のループを作成します(オプション2)。

オプション1:

protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 

    if (e.Row.RowType == DataControlRowType.DataRow) { 


    CheckBox chk = (row.Cells[0].FindControl("chkid") as CheckBox); 
     if (chk.Checked) 
     { 

     //Create the hiddenfield or viewstate which you can access page level. 
     } 
    } 
} 

オプション2:

foreach (GridViewRow row in GridView1.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox chk = (row.Cells[0].FindControl("chkid") as CheckBox); 
     if (chk.Checked) 
     { 

      // Create and append your array here 

     } 
    } 
} 

・ホープ、このことができます。

+0

私はオプション2が私にとってもっと意味があると思います。私はそれをショットし、あなたに教えてあげるよ!ありがとうPJS –

+0

@KenCarter:提供されたソリューションはあなたのために働くかどうか? – PJS

+0

"if(chk.Checked)"行にヌル参照エラーを表示して、私に提供した2番目の例で作業しています。昼食に向かいましたが、なぜ私がここでヌルになっているのか理解しようとしています。あなたの例を使用しているが、もちろん、GridView1リファレンスをActVulListGVの私のGridView IDに変更している。私はコードブロックを追加して、自分のコードに追加した内容を説明しました。UPDATE 04/13/17 1PM中央US –

関連する問題