2017-02-01 11 views
-2

私はチェックボックスリストを持っています。データベースに複数の値を格納してチェックします

<asp:CheckBoxList ID="cbBowelSounds" runat="server"> 
    <asp:ListItem Text="&nbsp;&nbsp;<span style=font-weight:normal;>1 Quadrant</span>" Value="1 Quadrant" /> 
    <asp:ListItem Text="&nbsp;&nbsp;<span style=font-weight:normal;>2 Quadrant</span>" Value="2 Quadrant" /> 
    <asp:ListItem Text="&nbsp;&nbsp;<span style=font-weight:normal;>Hypo</span>" Value="Hypo" /> 
    <asp:ListItem Text="&nbsp;&nbsp;<span style=font-weight:normal;>Hyper</span>" Value="Hyper" /> 
    <asp:ListItem Text="&nbsp;&nbsp;<span style=font-weight:normal;>Normal</span>" Value="Normal" /> 
</asp:CheckBoxList> 

複数の値を選択できます。これらの値をSQL Serverデータベースに保存します。

私はSQL Serverテーブルに5つの列を作成し、それぞれの選択した値を正しい列に追加すると考えました。それはうまくいかなかった。

は、その後、私はこのスニペットを見つけました:

var s = cbBowelSounds.SelectedValue; 
string[] values = s.Split(','); 

foreach (ListItem item in cbBowelSounds.Items) 
    item.Selected = values.Contains(item.Value); 

データベースは答えのためにこれを報告するまで...偉大だったこと:System.String[]

だから、私はここで何ができるのでしょうか?複数の値を持つ1つの列であっても、最初のリスト項目が1列目に書き込まれた5つの列であっても、それは私にとって重要ではありません。私はDBに送られるように選択された値が必要です。

は、私はSQLコード

private void InsertPatientNote() 
    { 
    var patId = txtPatId.Text; 
    string selectedValue = rbVitalsTaken.SelectedValue; 

    var s = cbBowelSounds.SelectedValue; 
    string[] values = s.Split(','); 
    bool quadOne = values.Contains("1 Quadrant"); 
    bool quadTwo = values.Contains("2 Quadrant"); 
    bool hypo = values.Contains("Hypo"); 
    bool hyper = values.Contains("Hyper"); 
    bool normal = values.Contains("Normal"); 

    var strConnString = ConfigurationManager.ConnectionStrings["HBMConnectionString"].ConnectionString; 

    SqlConnection con = new SqlConnection(strConnString); 

    SqlCommand command = new SqlCommand(); 
    command.CommandType = CommandType.StoredProcedure; 
    command.CommandText = "uspInsertPatientNote"; 

    command.Parameters.Add("@patId", SqlDbType.VarChar).Value = patId; 
    command.Parameters.Add("@rnId", SqlDbType.VarChar).Value = txtNurseId.Text.Trim(); 
    command.Parameters.Add("@PhysName", SqlDbType.VarChar).Value = txtPhysName.Text.Trim(); 
    command.Parameters.Add("@visitDate", SqlDbType.VarChar).Value = tbVisitDate.Text.Trim(); 
    command.Parameters.Add("@visitTimeInHr", SqlDbType.VarChar).Value = txtHourIn.Text.Trim(); 
    command.Parameters.Add("@visitTimeInMin", SqlDbType.VarChar).Value = txtMinuteIn.Text.Trim(); 
    command.Parameters.Add("@visitTimeInAmPm", SqlDbType.VarChar).Value = txtAmPmIn.Text.Trim(); 
    command.Parameters.Add("@visitTimeOutHr", SqlDbType.VarChar).Value = txtTimeOutHr.Text.Trim(); 
    command.Parameters.Add("@visitTimeOutMin", SqlDbType.VarChar).Value = txtTimeOutMin.Text.Trim(); 
    command.Parameters.Add("@visitTimeOutAmPm", SqlDbType.VarChar).Value = txtAmPmOut.Text.Trim(); 
    command.Parameters.Add("@extraPay", SqlDbType.VarChar).Value = rbExtraPayAmount.SelectedValue; 
    command.Parameters.Add("@extraPayAmt", SqlDbType.VarChar).Value = txtExtraPayAmount.Text.Trim(); 
    command.Parameters.Add("@patIdentify", SqlDbType.VarChar).Value = rbPatIdent.SelectedValue; 
    command.Parameters.Add("@careGiverAvail", SqlDbType.VarChar).Value = rbCaregiverAvail.SelectedValue; 
    command.Parameters.Add("@careGiverAssist", SqlDbType.VarChar).Value = txtCaregiverHelper.Text.Trim(); 
    command.Parameters.Add("@VitalsTaken", SqlDbType.VarChar).Value = selectedValue; 
    command.Parameters.Add("@BodyTemp", SqlDbType.VarChar).Value = txtVitalBodyTemp.Text.Trim(); //Label290.Text; 
    command.Parameters.Add("@PulseRate", SqlDbType.VarChar).Value = txtVitalPusleRate.Text.Trim(); 
    command.Parameters.Add("@RespRate", SqlDbType.VarChar).Value = txtVitalRespRate.Text.Trim(); 
    command.Parameters.Add("@BloodPressure", SqlDbType.VarChar).Value = txtVitalBloodPress.Text.Trim(); 
    command.Parameters.Add("@WtTaken", SqlDbType.VarChar).Value = rbWeightTaken.SelectedValue; 
    command.Parameters.Add("@ActaulWt", SqlDbType.VarChar).Value = txtInputActualWeigth.Text.Trim(); 
    command.Parameters.Add("@StatedWt", SqlDbType.VarChar).Value = txtInputStatedWeight.Text.Trim(); 
    command.Parameters.Add("@Stability", SqlDbType.VarChar).Value = rbStabilityWeight.SelectedValue; 
    command.Parameters.Add("@VitalComments", SqlDbType.VarChar).Value = txtVitalComments.Text.Trim(); 
    command.Parameters.Add("@LungSounds", SqlDbType.VarChar).Value = rbLungsSound.SelectedValue; 
    command.Parameters.Add("@LungSoundsOther", SqlDbType.VarChar).Value = txtOthersLungSound.Text.Trim(); 
    command.Parameters.Add("@Sob", SqlDbType.VarChar).Value = rbShortnessBreath.SelectedValue; 
    command.Parameters.Add("@SobDescribe", SqlDbType.VarChar).Value = rbSobDesc.SelectedValue; 
    command.Parameters.Add("@SobOther", SqlDbType.VarChar).Value = txtSobOther.Text.Trim(); 
    command.Parameters.Add("@Sputum", SqlDbType.VarChar).Value = txtSputum.Text.Trim(); 
    command.Parameters.Add("@Nebulizer", SqlDbType.VarChar).Value = txtNebDrug.Text.Trim(); 
    command.Parameters.Add("@Oxygen", SqlDbType.VarChar).Value = txtOxygen.Text.Trim(); 
    command.Parameters.Add("@Continuous", SqlDbType.VarChar).Value = rbOxyContinuous.SelectedValue; 
    command.Parameters.Add("@Prn", SqlDbType.VarChar).Value = rbOxyPrn.SelectedValue; 
    command.Parameters.Add("@Nasal", SqlDbType.VarChar).Value = rbOxyNasal.SelectedValue; 
    command.Parameters.Add("@Trach", SqlDbType.VarChar).Value = rbOxyTrach.SelectedValue; 
    command.Parameters.Add("@RespComments", SqlDbType.VarChar).Value = txtRespComments.Text.Trim(); 
    command.Parameters.Add("@Rhythm", SqlDbType.VarChar).Value = rbCardioRhythm.SelectedValue; 
    command.Parameters.Add("@Symptoms", SqlDbType.VarChar).Value = rbCardioSymp.SelectedValue; 
    command.Parameters.Add("@SymptomsOther", SqlDbType.VarChar).Value = txtOtherCardioSymp.Text.Trim(); 
    command.Parameters.Add("@Edema", SqlDbType.VarChar).Value = rbEdema.SelectedValue; 
    command.Parameters.Add("@Rle", SqlDbType.VarChar).Value = txtRle.Text.Trim(); 
    command.Parameters.Add("@Rue", SqlDbType.VarChar).Value = txtRue.Text.Trim(); 
    command.Parameters.Add("@Lle", SqlDbType.VarChar).Value = txtLle.Text.Trim(); 
    command.Parameters.Add("@Lue", SqlDbType.VarChar).Value = txtLue.Text.Trim(); 
    command.Parameters.Add("@EdemaComments", SqlDbType.VarChar).Value = txtEdemaComments.Text.Trim(); 
    command.Parameters.Add("@BowelMovements", SqlDbType.VarChar).Value = rbBowelMove.SelectedValue; 
    command.Parameters.Add("@LastBowelMove", SqlDbType.VarChar).Value = txtLastBowelMove.Text.ToString(); 
    command.Parameters.Add("@BowelSounds1", SqlDbType.VarChar).Value = quadOne; 
    command.Parameters.Add("@BowelSounds2", SqlDbType.VarChar).Value = quadTwo; 
    command.Parameters.Add("@BowelSounds3", SqlDbType.VarChar).Value = hypo; 
    command.Parameters.Add("@BowelSounds4", SqlDbType.VarChar).Value = hyper; 
    command.Parameters.Add("@BowelSounds5", SqlDbType.VarChar).Value = normal; 
    command.Parameters.Add("@Dialysis", SqlDbType.VarChar).Value = rbDialysisYn.SelectedValue; 
    command.Parameters.Add("@Treatment", SqlDbType.VarChar).Value = rbDialysis.SelectedValue; 
    command.Parameters.Add("@Urine", SqlDbType.VarChar).Value = rbUrine.SelectedValue; 
    command.Parameters.Add("@UrineOther", SqlDbType.VarChar).Value = tbUrine.Text.Trim(); 
    command.Parameters.Add("@BowelComments", SqlDbType.VarChar).Value = tbEmulationComments.Text.Trim(); 

    command.Connection = con; 

    try 
    { 
     con.Open(); 
     command.ExecuteNonQuery(); 
     // lblMessage.Text = "Record inserted successfully"; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     con.Close(); 
     con.Dispose(); 
    } 
    } 

データベースは

  • BowelSounds1真
  • BowelSounds2虚偽の表に、これらの値を示しているため、これを使用してい

    ありがとう

  • BowelSounds3 False
  • BowelSounds4偽
  • BowelSounds5偽

しかし、1(1象限)、3(ハイポ)、および5(ノーマル)がページ上で確認されています。

+0

データベースがsystem.string []を返したDBにこのデータをコミットするためにどのようなアプローチを使用していますか?あなたのDBコードの例と、これらの値をどのように渡していますか?あなたのソリューションは、ORMや古い学校のADO.NETを使用して、作成したストアドプロシージャに手作業でパラメータを渡すかどうかによって異なります。 –

+0

SQLの例を – RazorSharp

+0

に追加しました。あなたのコレクションを処理しているパラメータ。 –

答えて

0

私は文字列の配列に値を取得するために以前提供さのブロックを使っているところ、これは非常に単純で見ることができました:

var s = cbBowelSounds.SelectedValue; 
string[] values = s.Split(','); 

bool 1Quadrant = values.Contains("1 Quadrant"); 
bool 2Quadrant = values.Contains("2 Quadrant"); // Edit to fix this, was previously 1 Quadrant 
bool hypo = values.Contains("Hypo"); 
bool hyper = values.Contains("Hyper"); 
bool normal = values.Contains("Normal"); 

command.Parameters.Add("@1Quadrant", SqlDbType.Boolean).Value = 1Quadrant;   
command.Parameters.Add("@2Quadrant", SqlDbType.Boolean).Value = 2Quadrant; 
command.Parameters.Add("@Hypo", SqlDbType.Boolean).Value = hypo; 
...etc... 

これはあなたのニーズを満たすこと?がんばろう!

+1

いいえ、それはあなたがそれを書いた方法に基づいてすべきことをしていないようです。これは最初の値(bool 1Quadrant)で完全に機能しますが、チェックに関係なく、その他の値はすべてFALSEに設定されます。あなたが私に役立つかどうかを確認するために、変更されたコードで投稿を更新してみましょう:) – RazorSharp

+0

私はデバッグに行き、値の文字列配列上にカーソルを置いて、それが本当にあなたが期待するものが含まれているかどうかを確認しますか?これを見直し、変数にスペルミスがある可能性があるコードに誤字がありました。これを反映して私の答えが修正されました。これらの値をより明示的にSQLにプラグインしてデータベースを更新することができればうれしいことです。 –

+0

また、cbBowelSounds.SelectedValueが期待どおりの実際の配列を返していることを確認すると、s.Split( "、")はその変数に1つのものだけが設定されていると何もしない可能性がありますか? –

関連する問題