0

GridView セルをリストに保存して、別のリストと比較したいと考えています。

これは私が試したものです:

        BudgetCommessa budgetCommessa = new BudgetCommessa();
        List<BudgetCommessa> listaDaGridView = new List<BudgetCommessa>();
        for (int i = 1; i <= preventivoView.Rows.Count; i++)
        {
            budgetCommessa.Task = Convert.ToString(preventivoView.SelectedRow.Cells[0].Text);//SelectedDataKey.Values[0]);
            listaDaGridView.Add(budgetCommessa);
        }

しかし、GridView のセル (0,0) が設定されていても、NullReferenceException が発生します

4

3 に答える 3

2

これを試して :

    budgetCommessa.Task = preventivoView.Rows[i].Cells[0].Text;

この助けを願っています。

于 2013-01-15T09:17:36.850 に答える
2

グリッドビューに選択した行があるかどうかを確認する必要があります。それとは別に、コードには他の問題があります。

  1. ループは0で始まり、。で続く必要がありRows.Count - 1ます。
  2. forループ内でインスタンス化する必要がありますbudgetCommesa。そうしないと、すべて同じ値を指すオブジェクトのリストが表示されます。

したがって、コードは次のようになります。

for (int i = 0; i < preventivoView.Rows.Count; i++)
 {
        if(preventivoView.SelectedRow != null)
            {            
            BudgetCommessa budgetCommessa = new BudgetCommessa();
            budgetCommessa.Task = Convert.ToString(preventivoView.SelectedRow.Cells[0].Text);//SelectedDataKey.Values[0]);
            listaDaGridView.Add(budgetCommessa);
            }
 }

選択されているかどうかに関係なく、すべての行のセルから値を取得しようとしている場合は、SelectedRowではなく各行を反復処理する必要があります。

for (int i = 0; i < preventivoView.Rows.Count; i++)
 {
    BudgetCommessa budgetCommessa = new BudgetCommessa();
    budgetCommessa.Task = Convert.ToString(preventivoView.Rows[i].Cells[0].Text);//SelectedDataKey.Values[0]);
    listaDaGridView.Add(budgetCommessa);
 }
于 2013-01-15T09:11:41.670 に答える
0

選択した行を使用する場合は、グリッドにボタン フィールドが必要です。

<asp:GridView ID="GridView1" runat="server" OnSelectedIndexChanged="SelectedRow_changed">
    <Columns>
        <asp:ButtonField ButtonType="Button" CommandName="Select" HeaderText="Select Row"
            Text="Select" />
    </Columns>
</asp:GridView>

次に、選択した行のイベントを変更します。

public void SelectedRow_Changed(object sender, GridViewSelectEventArgs e)
{
  GridViewRow row = CustomersGridView.Rows[e.NewSelectedIndex];
  BudgetCommessa budgetCommessa = new BudgetCommessa();
  //Would of shifted one because of the new button column
  budgetCommessa.Task = Convert.ToString(row.Cells[1].Text);
}

各行を参照して反復処理する場合は、正しい Habib の回答を使用してください。

于 2013-01-15T09:30:11.350 に答える