データリストから行を動的に削除する方法を探して、ユーザーに入力インターフェースをクリーンアップする方法を提供します。 aspデータリストはSQLからロードされ、ユーザーはテーブルを操作して別のデータベースに送信します。DataList c#で行を動的に削除する方法asp
私はデータテーブルのセッション変数を使用して、それに行を追加してからデータリストに再バインドすることで機能する 'addRows'を持っていますが、行を削除すると同じ機能を持つようには見えません。
現在のロジックは、データリスト 'delRows'コマンドを使用して、現在の入力または変更されたデータをaspデータリストから取得し、データテーブルに割り当て、データテーブルをループして特定のフィールドが空の行を削除し、 aspデータリストにdatatable。
現在のコードの後処理が、DT満たされ、エラー「DT = NULL」を取得することはできません。
if (e.CommandName == "delRows")
{
DataList DataList1 = (DataList)FindControl("DataList1"); //find datalist in current state
Session["dataList1"] = DataList1; //assign datalist to session variable
DataTable dt = Session["dataList1"] as DataTable; //populate datatable with datalist session
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dt.Rows[i];
string check = dr["item_no"].ToString();
if (check == String.Empty)
{
dr.Delete();
}
}
DataList1.DataSource = dt;
DataList1.DataBind();
}
がうまくいけば、これを達成するためのより良い方法があります!
。 DataTableを使用してデータを取得するだけではどうですか? – MethodMan
この変数にはどこに値を割り当てていますか? 'Session [" dataList1 "] = DataList1;'後方参照 – MethodMan
セッション["dataList1"]はaddRowコマンドでバインドされます。私が実行していると信じている問題は、現在のデータリストの状態を取得する方法です。つまり、ユーザーはそれを変更できますが、その '現在の状態'を取得してループする必要があります。私はセッション変数にそれをつかんで、それからセッションをdatatable(dt)にしてから、ループスルーテーブルを考えていました。セッション["dataList1"] = DataList1;見つかったデータリストコントロールを前の行から取得し、それをセッション変数に割り当てます。 – SDG