2

ID の先頭に「txt」が付いている aspx ページに多数のテキスト ボックスがあります。残りの ID には、特定のオブジェクトに同じ名前の対応するプロパティがあります。これらの文字列プロパティを列挙し、同じ名前 (プレフィックスを削除したもの) のテキスト ボックスが見つかった場所でそれらを更新できるようにしたいと考えています。何か案は?を使用するDictionaryことで問題を回避できることはわかっていますが、理想的ではありません。

4

3 に答える 3

4

リフレクションを使用してそれを行うことができます:

MyObject data = new MyObject();
foreach (var pi in typeof(MyObject).GetProperties().Where(i =>
                                      i.PropertyType.Equals(typeof(string)))
{
   var control = FindControl("txt" + pi.Name) as ITextControl;
   if (control != null)
       pi.SetValue(data, control.Text, null);
}
于 2012-08-23T15:57:35.067 に答える
1

コントロールを操作できます。

foreach (Control control in divXYZ.Controls)
    if (control is TextBox)
        ((TextBox)control).Text = "whatever";

FindControl は、ソリューションで使用できる別の方法です。

Control myControl = FindControl("txtYourID");

http://msdn.microsoft.com/en-us/library/486wc64h.aspx

于 2012-08-23T16:06:45.960 に答える
0

ページ上のすべてのテキストボックスコントロールを見つけて、リフレクションを使用して対応するプロパティを埋めるだけです。

于 2012-08-23T15:59:56.990 に答える