ASP.NETダイナミックデータで使用される「Edit.aspx」デフォルトページテンプレートを変更し、いくつかのコントロールを追加します。私はDetailsDataSource.GetTable().EntityType
を見て編集中のオブジェクトのタイプを見つけることができますが、実際のオブジェクト自体をどのように見ることができますか?また、オブジェクトのプロパティを変更して、データコンテキストに変更を送信するよう指示することはできますか?ダイナミックデータで編集中のオブジェクト/行へのアクセス
3
A
答えて
1
あなたは既に解決策を見つけたかもしれませんが、私はこれについて私の経験を共有したいと思います。
それは素晴らしいピタと判明しましたが、私は編集行を取得することができました。 DetailsDataSource WhereParametersを抽出して、実行時にクエリを作成する必要がありました。
以下のコードは、単一の主キーを持つテーブルで動作します。あなたは複合キーを持っている場合は、私が推測する、それは修正が必要になります:
Parameter param = null;
foreach(object item in (DetailsDataSource.WhereParameters[0] as DynamicQueryStringParameter).GetWhereParameters(DetailsDataSource)) {
param = (Parameter)item;
break;
}
IQueryable query = DetailsDataSource.GetTable().GetQuery();
ParameterExpression lambdaArgument = Expression.Parameter(query.ElementType, "");
object paramValue = Convert.ChangeType(param.DefaultValue, param.Type);
Expression compareExpr = Expression.Equal(
Expression.Property(lambdaArgument, param.Name),
Expression.Constant(paramValue)
);
Expression lambda = Expression.Lambda(compareExpr, lambdaArgument);
Expression filteredQuery = Expression.Call(typeof(Queryable), "Where", new Type[] { query.ElementType }, query.Expression, lambda);
var WANTED = query.Provider.CreateQuery(filteredQuery).Cast<object>().FirstOrDefault<object>();
0
それがDDオブジェクトの場合は、FieldTemplateUserControl.FindFieldTemplate(controlId)を使用することができるかもしれません。次に、必要に応じてデータを操作するためにITextControlとしてキャストできます。
そうでない場合、子コントロールを見つけるために、この拡張メソッドを使用してみてください:私は別の解決策を見つけた
public static T FindControl<T>(this Control startingControl, string id) where T : Control
{
T found = startingControl.FindControl(id) as T;
if (found == null)
{
found = FindChildControl<T>(startingControl, id);
}
return found;
}
0
、他のものは動作しませんでした。
私の場合は、/ CustomPages/Devices/
にあるEdit.aspxをコピーしました。デバイスは、このカスタム動作が必要なテーブルの名前です。
Edit.aspxでこれを追加 - > Page_Init()
DetailsDataSource.Selected += entityDataSource_Selected;
Edit.aspxでこれを追加します。
protected void entityDataSource_Selected(object sender, EntityDataSourceSelectedEventArgs e)
{
Device device = e.Results.Cast<Device>().First();
// you have the object/row being edited !
}
ちょうどあなた自身のテーブル名にデバイスを変更します。
関連する問題
- 1. ダイアログボックス - 編集中の値へのアクセスの問題
- 2. 編集中のページのクラス名へのアクセス
- 3. 私の行動へのアクセスは他のコントローラから編集
- 4. ASP.NETダイナミックデータのテーブルの編集を許可しない
- 5. ArrayListがアクセスされずに編集中
- 6. 編集、編集、テキストファイルへのマップ
- 7. 編集中のjava.util.ConcurrentModificationException
- 8. 編集JavaScriptのオブジェクト
- 9. 編集中php.ini
- 10. シェアポイントブレッドクラムトレイル編集中
- 11. JavaScriptで編集された隠し入力値へのアクセス
- 12. c# - 別のクラスから実行中のオブジェクト参照へのアクセス
- 13. ASP.NETダイナミックデータ:特定の行のみにアクセスするアクセス
- 14. ダイナミックデータのハイチャートへのバインド
- 15. JTableで編集中のセルの位置
- 16. NSOutlineView 10.12で編集中のセルベースのバックグラウンドグリッチ
- 17. コントローラMVCでの作成/編集操作の試行中C#
- 18. Jquery - オブジェクトのパラメータを編集
- 19. 永続オブジェクトの編集
- 20. Javascript:オブジェクト内のオブジェクトの削除/編集
- 21. 編集オブジェクトwhile animating
- 22. 編集中にNSTableViewへの更新を防止する
- 23. 行の編集 - プロトタイプ
- 24. 実行中のドッカーコンテナのログフォルダへのアクセス
- 25. テキストボックスで編集中の行を特定する
- 26. 実行中のドッカーコンテナファイルシステムへのアクセス
- 27. jqGrid行編集カスタム編集アクションツールチップ
- 28. slickgridの編集可能な行と編集不可能な行
- 29. JQGrid行編集
- 30. PHPからの集中的な機能への最速のアクセス?
いつ実際のオブジェクトにアクセスしようとしていますか? – RSolberg
使用できるDataBoundイベントはありますか? – hunter