ページ上で2つのgridviewを繰り返し実行するのに役立つ必要があります。最終的には、ページに合計6つのグリッドビュー(またはセクション)が表示されます。各グリッドビューは同じ列を持ちますが、それぞれ異なる行数を持ちます。反復の目的は、現在のグリッドビューの反復で、1つの列で選択されたラジオボタンリスト項目の合計数をカウントして、送信ボタンのラベルに情報を表示できるようにすることです。 "10セクション1の14個の評価がチェックされています。 "または " 2の11の評価が11個あります。または場合によっては可能性があります。ページ上の複数のグリッドビューをループする際の助けが必要です。C#.net
私は私がこれまで持っているコードを思い付くためにGoogleで検索し、チャットHow to use a for loop to modify multiple controls (gridview)
含むこのスレッドに従っしかし、私はこのコード行をどうするかを理解していないしています。省略記号の後ろには何がありますか?それは私の状況に適用されますか?
((GridView) Page.FindControl("GridView" + i)).Rows[1].........
私は追加すると.Rows[j]
(または1)、赤い波線が警告して... .Rows
に表示されます:system.web.ui.controlは「行」なしextenstion方法 'の定義が含まれていません行は、system.web.ui.control型の最初の引数を受け入れることができます(指示文またはアセンブリ参照を使用していませんか?)。私はusing System.Linq
を持っています。私のページの上部にあるステートメント。 ここで私のコードは、gridviewsを数えることです。 GridViewのidはGridView1、GridView2などです。GridViewsはsqldatasourceを使用して塗りつぶされ、バインドされたフィールド列とテンプレートフィールドの両方の列を含みます。私はブラウザにビュー経由でコードを実行した場合には、このコード行の「オブジェクトのインスタンスに設定されていないオブジェクト参照」エラーがスローされます:デバッグ中に
foreach (GridViewRow row in gv.Rows);
しかし、正しいのGridViewを認識しているようです正しい行数と正しいラジオボタンリスト項目が選択されているためです。
コード:
//UPDATED code includes solution:
protected void CountSelectedRatings()
{
int count = 0;
int itemsSelected = 0;
string str = string.Empty;
int i = 1;
//loop through 6 gridviews
for (i = 1; i <= 6; i++)
{
//identify current grid to iterate through
GridView gv = (GridView)Page.FindControl("GridView" + i);
itemsSelected = 0;
if (gv != null)
{
foreach (GridViewRow row in gv.Rows)
{
count = gv.Rows.Count;
RadioButtonList rbl = row.FindControl("rblRating" + i) as RadioButtonList;
foreach (ListItem item in rbl.Items)
{
if (item.Selected == true)
{
//increment count
itemsSelected += 1;
switch (i)
{
case 1:
strRowCountMessage1 = itemsSelected + " of " + count + " ratings in Section " + i + " are checked.";
lblRowCountMessage1.Text = strRowCountMessage1;
break;
case 2:
strRowCountMessage2 = itemsSelected + " of " + count + " ratings in Section " + i + " are checked.";
lblRowCountMessage2.Text = strRowCountMessage2;
break;
//case 3:
// strRowCountMessage3 = itemsSelected + " of " + count + " ratings in Section " + i + " are checked.";
// lblRowCountMessage3.Text = strRowCountMessage3;
// break;
//case 4:
// strRowCountMessage4 = itemsSelected + " of " + count + " ratings in Section " + i + " are checked.";
// lblRowCountMessage3.Text = strRowCountMessage4;
// break;
//case 5:
// strRowCountMessage5 = itemsSelected + " of " + count + " ratings in Section " + i + " are checked.";
// lblRowCountMessage3.Text = strRowCountMessage5;
// break;
//case 6:
// strRowCountMessage6 = itemsSelected + " of " + count + " ratings in Section " + i + " are checked.";
// lblRowCountMessage3.Text = strRowCountMessage6;
// break;
}//end switch
}//end if item.Selected = True
}//end foreach ListItem
}//end foreach gridviewrow
}//end if gv !=null
}// end for loop i
GridView1.DataBind();
GridView2.DataBind();
//GridView4.DataBind();
//GridView5.DataBind();
//GridView6.DataBind();
}
このことができます参照してください: –
TambaySaPinas
私の問題に関心をお寄せいただきありがとうございます。そのリンクはラジオボタンリスト項目の値を見つけることですが、私のコードはその情報をうまく取得しています。 「foreach(GridViewrow row in gv.Rows)」のコードエラー。実行すると残っているが、デバッグ中に正しいグリッドとラジオボタンリストの項目が見つかる。 – Doreen
問題は最初にヌルグリッドをチェックしないことと関係があると思います.... – Doreen