私はカスタムデータソースを使って動的に生成されたgridviewを持っています。GridView動的ItemTemplateフィルタリング後のEditIndex
は、GridViewのは
さんが言ってみましょう。..
は、私は、GridViewコントロールにフィルタリング機能を追加しました.. "を挿入、削除、編集を"
すべて(すべての機能)が正常に動作していることができますフィルタの後、今
SELECT * FROM <Table>
:以前に私のデータソースは、このselect文に基づいています
濾過した後SELECT * FROM <Table> WHERE <Filter Condition>
..私はこれによってラインに
public void gvGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
gvGridView.EditIndex = e.NewEditIndex;
((TemplateField)gvGridView.Columns[1]).EditItemTemplate = null;
//disable editing on primary key
if (txtSearch.Text != string.Empty || CountRow() > 0)
{
FilterQuery(); //refilter the gridview
}
else
{
gvGridView.DataBind();
//if gridview is not meant to be filtered, just leave it as it is
}
Session["SelecetdRowIndex"] = e.NewEditIndex;
}
...編集モード時など..適切に編集(更新)GridViewコントロールを行うことができないです:
gvGridView.EditIndex = e.NewEditIndex;
editindexは正しく初期化されません。例:フィルタの前に
は、それが何をするかのフィルタは、それが意志した後、私はこのGridViewのを編集した場合、それは、インデックスなし1
でフィルタした後、インデックスなし8
ましたインデックス8のデータを更新するのではなく、インデックス1のデータを上書きします。
私は私の質問が十分明確です。いくつかの答えを聞くために:) rward ..
編集:
GridViewの更新時に何が起こるか、この:
GridViewRow row = gvGridView.Rows[e.RowIndex];
//decide which row being edited..
for (int i = 0; i < Table.Columns.Count; i++)
{
string field_value = ((TextBox)row.FindControl(Table.Columns[i].ColumnName)).Text;
ParameterArray.Add(field_value);
//storing all value in that row into an array (including PK)
}
コードは、上記以外の罰金(店舗配列にすべての値を)動作します
明らかに、e.NewEditIndexは開始からのみ戻ります。索引にはない主キーのベースを編集または削除する必要があります。 – prema
plsは私がアップデートを提供しているように精巧です。 – rofans91