0

このトピックについてオンラインで読むことができるものはすべて読みましたが、提案された解決策はどれも機能しません。

私の状況は非常に単純です...

データをロードするグリッドがあります....

グリッドが読み込まれると、ユーザーは特定の列を編集してフィールドの値を変更できます (以下のコード スニペットを参照)。

<dx:GridViewDataTextColumn Caption="Charge" FieldName="Charge" Width="100px" CellStyle-HorizontalAlign="Right" PropertiesTextEdit-DisplayFormatString="{0:c2}" VisibleIndex="4">
 <DataItemTemplate>
 <dx:ASPxTextBox ID="ASPxCharge" runat="server" Width="75px" Text='<%# Eval("Charge") %>'>
 </dx:ASPxTextBox>
 </DataItemTemplate>
 </dx:GridViewDataTextColumn>

この時点で、フォームのボタンをクリックしてコード ビハインド メソッドを実行し、次の処理を行います。グリッド上のすべての行を 1 つずつループして、変更された値を更新する方法が必要です。私のデータベースで。値が変更されたかどうかは、私が処理できることに注意してください。必要なのは、変更された値を取得するために行と特定の列にアクセスすることだけです。

コード ビハインド メソッドで VisibleRowCount プロパティを使用しようとしましたが、この値は 0 に評価されます。明らかに、ポストバックの後、VisibleRowCount プロパティは 0 に戻されるため、グリッド コレクションをループできません。値を ViewState に保存しようとしましたが、VisibleRowCount プロパティは明らかに読み取り専用です。

int visibleRowCount = Utility.GetValue<int>(ViewState["VisibleRowCount"]);
                    for (int i = 0; i < visibleRowCount; i++)
                    {
                        DataRow aspxDataRow = updateItemsGridView.GetDataRow(i);

                        Array arr = aspxDataRow.ItemArray;

この明らかな単純な問題をどのように達成できますか???

</p>

4

1 に答える 1

0

なぜそのようにしているのかはわかりませんが、それらをリストに入れてみることができます。

List<int> ids = new List<int>();
for (int i = 0; i < updateItemsGridView.VisibleRowCount; i++)
{
     ids.Add(Convert.ToInt32(updateItemsGridView.GetRowValues(i, "Charge")));
}
于 2013-03-29T23:46:12.620 に答える