2017-03-24 20 views
0

Webフォームを作成していて、5つのテキストボックスがあります。ここに置かれるデータは、このような3つの列を持つテーブルを返すストアドプロシージャから来る:今C#テキストボックスIDに基づいてSQLデータをHTMLテキストボックスに表示

--------------------- 
|Group| ID | Amount | 
|-----+-----+--------| 
|A |1 | 5  | 
|B |2 | 9  | 
|B |1 | 2  | 
|A |2 | 1  | 
|A |3 | 57  | 
---------------------- 

、私がどのように割り当てることができ、効率的な方法で、それに対応するテキストボックスに具体的な量の値これは列とグループIDによって次のように異なります。

txt_A1.Value=5; 
txt_A2.Value=1; 
txt_A3.Value=5; 
txt_B1.Value=2; 
txt_B2.Value=9; 

私は現在このコードを使用していますが、動作しません。テキストボックスは、あなたのタスクを達成するために<input type="Text" id="txt_A1" runat="server">

+0

あなたはデバッグしようとしましたか?どんなエラーが出ていますか? –

+0

@chindiralasampathkumarエラーはありません。しかし出力がありません – theo

+0

なぜこの目的のためにjqueryを使用しないのですか? AJAX呼び出しを行い、データを取得してコントロールに移入します。 –

答えて

0

のようなHTMLオブジェクトで、これらすべての<input type="text" id="txt_A1">コントロールがrunat="server"ように、サーバー、またはコードビハインドを持っている必要があることを

string CatID = String.Concat(dr["Group"], dr["ID"]); 
var control = Controls.Cast<Control>().FirstOrDefault(x => x.ID == string.Format("txt_{0}", CatID)) as TextBox; 
if (control != null) 
control.Text = dr["Amount"].ToString(); 

はTAKE注、それらにアクセスすることができます。

次に、<input>コントロールの代わりにTextBoxというasp.netコントロールを使用することをお勧めします。それらを扱う方が簡単です。

あなたのアイデアは悪くないが、コントロールの最初のレベルを通過します。つまり、入力がdiv(それはdivのコントロールコレクションに属しています)にあれば、コードは見つからないでしょう。子コントロールと子コントロールを持つすべてのコントロールの子コントロールを持つすべてのコントロールとページ上の入力コントロールを見つけるには、再帰関数を作成する必要があります。

ここにそのような関数があります。私はあなたが検索しているコントロールのタイプを渡すことができるようにそれをタイプしました。あなたのケースでは、である必要があります。inputは一般的なHTMLテキストコントロールです。 asp.net TextBoxコントロールを使用している場合は、コントロールタイプとしてTextBoxを渡す必要があります。

public IEnumerable<Control> GetControlsOfType<T>(Control parent) 
{ 
    if (parent.HasControls()) 
    { 
     foreach (Control childControl in parent.Controls) 
     { 
      if (childControl is T) 
       yield return childControl; 

      foreach (var nextLevel in GetControlsOfType<T>(childControl)) 
      { 
       yield return nextLevel; 
      } 
     } 
    } 
} 

今、このようにそれを使用します。

//find all textControls 
var textControls = GetControlsOfType<HtmlInputText>(this); 
//find specific control from the list 
var control = textControls.FirstOrDefault(t => t.ID == string.Format("txt_{0}", CatID)); 
//set value 
(control as HtmlInputText).Value = "some value"; 
+0

WOW。あなたは最高です。私を救ってくれてありがとう。できます。ありがとうございました – theo

関連する問題