2017-09-08 7 views
0

私はDropDownListを持っています。ドロップダウンはデータベースから読み込まれます。asp:DropDownListから選択した値に基づいて入力テキストを設定します。

Utility.cs

public DataTable Get_Student_Billing_Type(DropDownList lb, int faculty) 
     { 
      try 
      { 
       DataTable dt = new DataTable(); 
       SqlParameter param1 = new SqlParameter("@P_BILLING_FACULTY", SqlDbType.Int); 
       param1.Value = faculty; 
       dt = DbAccessHelper.ExecuteDataSet("P_GET_BILLING_TYPE", new SqlParameter[] { param1 }, true).Tables[0]; 
       if (dt != null && dt.Rows.Count > 0) 
       { 
        foreach (DataRow row in dt.Rows) 
        { 
         lb.Items.Add(new ListItem(row["BILLING_HEADING"].ToString(), row["BILLING_TYPE_ID"].ToString())); 

        } 
       } 
       return dt; 

      } 
      catch (Exception) 
      { 

       return null; 
      } 
     } 

このデータテーブルDTを有する3列BILLING_HEADING, BILLING_TYPE_ID, BILLING_AMOUNT

ユーザがその対応BILLING_AMOUNTは横入力テキストに示されるべきであるドロップダウンリストから値すなわちBILLING_HEADINGを選択したとき私の要件でありますそれ。私はOnSelectedIndexChangedを使用しましたが、選択した項目のDataTableから対応するフィールド値を表示する方法を知っています。

ASPページのコード

<div class="form-group"> 
    <label for="inputType" class="col-md-2 control-label">Type</label> 
    <div class="col-md-6"> 
     <asp:DropDownList ID="DDL_type" class="form-control input_text" OnSelectedIndexChanged="DDL_type_SelectedIndexChanged" runat="server"></asp:DropDownList> 
    </div> 
    <div class="col-md-3"> 
     <input type="text" class="form-control input_text" id="inputTypeAmount" placeholder="AMOUNT" readonly="true" autocomplete="off" /> 
    </div> 
</div> 

のaspxコード

protected void GetType() 
     { 
      try 
      { 
       DataTable dt = new DropDown().Get_Patient_Billing_Type(DDL_type, 1); 
      } 
      catch (Exception) 
      { 

       throw; 
      } 
     } 

     protected void DDL_type_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      try 
      { 
      // how to write logic so that the corresponding BILLING_AMOUNT show for selected BILLING_HEADING 

      } 
      catch (Exception) 
      { 

       throw; 
      } 
     } 

答えて

1

あなたはこのようにそれを行うことができます。エラーを取得

var selectedRow = dt.AsEnumerable() 
        .Where(row => row.Field<int>("BILLING_TYPE_ID") == Convert.ToInt32(DDL_type.SelectedValue)).FirstOrDefult(); 

yourTextBox.Text = Convert.ToString(selectedRow.Field<int>("BILLING_AMOUNT")); 
+0

'型のオブジェクトをキャストすることができません '可能System.Int32'クエリに 'System.String'と入力すると、 '.Where(row => row.Field (" BILLING_TYPE_ID ")== DDL_type.SelectedValue).FirstOrDefult();' ' BILLING_TYPE_ID'のデータ型はINTです。 – user4221591

+0

@ user4221591 'BILLING_TYPE_ID'にはデータ型stringがあると仮定しました。だから私は 'row.Field (" BILLING_TYPE_ID ")'を使用しました。私は自分の答えを編集しました。 'selectedRow.Field (" BILLING_AMOUNT ")も変更しました。 –

関連する問題